将数据集中的多组因子与dplyr

时间:2016-01-29 16:02:03

标签: r dplyr factors

关于将因子与dplry结合起来的问题。在下面相同的df中,我希望将因子a和c组合成每年的新因子q,并将它们的值相加。我知道我可以group_by(年),但我怎么也group_by q = a& c,l,b和y? (实际上,我想结合12个年中三个因素水平。)

year  factor    value   
1977     a      564907 
1977     c      349651
1977     l     2852949  
1978     a      504028  
1978     1      413120  
1978     y     2553088 
1979     a      497766 
1979     c      789007 
1979     b     1567934
1980     a      346892

我想:

year  factor    value   
1977     q      564907 + 349651
1977     l     2852949  
1978     q      504028  
1978     1      413120  
1978     y     2553088 
1979     q      497766 + 789007 
1979     b     1567934
1980     q      346892

提前致谢。

2 个答案:

答案 0 :(得分:3)

这是一个解决方案。不优雅,但我觉得它很好用。

library(dplyr)

df %>% 
       mutate(index = ifelse(factor %in% c("a", "c"), "q", as.character(levels((factor))))) %>%
       group_by(year, index) %>%
       summarise(sum(value))

Source: local data frame [8 x 3]
Groups: year [?]

   year index sum(value)
  (int) (chr)      (int)
1  1977     b    2852949
2  1977     q     914558
3  1978     l     413120
4  1978     q     504028
5  1978     y    2553088
6  1979     b    1567934
7  1979     q    1286773
8  1980     q     346892

答案 1 :(得分:0)

可以使用recode中的car来完成此操作。按操作分组可以使用data.table完成。我们将'data.frame'转换为'data.table'(setDT(df1)),recode'factor'变量将levels'a'和'c'转换为'q ',将其用作分组变量和'year',并获得'{1}}的'value'。

sum