如何解决按列汇总条件-R中的数据帧
df <- data.frame(var1=c('a','a','c','d','c'),var2=c('kk','kk','ll','bb','bb'),var3=c(1,1.4,2,5.1,3.2))
df
var1 var2 var3
1 a kk 1
2 a kk 1.4
3 a ll 2
4 c bb 2
5 d bb 5.1
6 c bb 3.2
#I want df to look like this
df
var1 var2 sum
1 a kk 2.4
2 a ll 2
3 c bb 5.2
4 d bb 5.1
如果var1
在var2
中具有相同的值,则应将它们相加。例如,所有a
(var1
)在kk
中具有var2
作为值。
我完全不知所措,但尝试了sapply(split(df$var1,df$var2),sum)
。显然我错过了指定应该总结的内容(var3
)。
谢谢你的建议
解决方法
使用data.table:
df <- data.frame(var1=c('a','a','c','d','c'),var2=c('kk','kk','ll','bb','bb'),var3=c(1,1.4,2,5.1,3.2))
library(data.table)
DT <- as.data.table(df)
DT[,.(sum = sum(var3)),by = .(var1,var2)]
使用dplyr:
df <- data.frame(var1=c('a',3.2))
library(dplyr)
df %>% group_by(var1,var2) %>% summarize(sum = sum(var3))
输出:
var1 var2 sum
1: a kk 2.4
2: a ll 2.0
3: c bb 5.2
4: d bb 5.1
,
data.table
解决方案:
library(data.table)
dt <- data.table(
var1=c('a',3.2)
)
dt[,var2)]
编辑:@daniellga将我击败了20秒
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。