首页 > 解决方案 > 按列中的条件总结 - R 中的数据框

问题描述

df <- data.frame(var1=c('a','a','a','c','d','c'),var2=c('kk','kk','ll','bb','bb','bb'),var3=c(1,1.4,2,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( )加起来。我完全一无所知,但尝试过。显然我错过了说明应该总结什么()。var1kkvar2sapply(split(df$var1,df$var2), sum)var3

谢谢你的建议

标签: rdataframesum

解决方案


使用数据表:

df <- data.frame(var1=c('a','a','a','c','d','c'),var2=c('kk','kk','ll','bb','bb','bb'),var3=c(1,1.4,2,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','a','a','c','d','c'),var2=c('kk','kk','ll','bb','bb','bb'),var3=c(1,1.4,2,2,5.1,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

推荐阅读