让df
作为我们的测试数据框架:
set.seed(1)
df <- data.frame(id = c(1,1,2,2,3,3,3),
var1 = round(runif(7)),
var2 = round(runif(7)),
var3 = round(runif(7)))
df
id var1 var2 var3
1 1 0 1 1
2 1 0 1 0
3 2 1 0 1
4 2 1 0 1
5 3 0 0 0
6 3 1 1 1
7 3 1 0 1
我想对id进行总结,并总结如下所有的值:
df %>%
group_by(id) %>%
summarise(sum_var_1 = sum(var1),
sum_var_2 = sum(var2),
sum_var_3 = sum(var3)) %>%
data.frame
id sum_var_1 sum_var_2 sum_var_3
1 1 0 2 1
2 2 2 0 2
3 3 2 1 2
现在的问题是:是否有一种方法可以避免sum_var_2 = sum(var2) [...]
步骤,并在summarise
中使用类似公式之类的功能来完成它?由于有数百个特点,我想总结一下!
任何帮助都将不胜感激!
发布于 2017-10-10 16:58:43
因为所有变量都以"var“开头,所以可以这样做。
df %>%
group_by(id) %>%
summarise_at(vars(starts_with("var")), sum)
返回你的例子。
编辑:正如@jake评论的那样,summarise_all
的工作做得更好,并且也不需要将变量名称标准化:
df %>%
group_by(id) %>%
summarise_all(sum)
https://stackoverflow.com/questions/46671876
复制相似问题