关于将因子与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
提前致谢。
答案 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