【发布时间】:2018-07-25 14:07:13
【问题描述】:
我想使用aggregate 根据特定条件计算多列的简单汇总指标,例如仅适用于> 0 的那些行。 subset在使用aggregate 之前对值> 0 的数据显然不起作用,因为这将删除所有列的整行,即使只出现一个零。请参阅以下代码进行说明:
idA <- c("A","A","A","A","A","B","B","B","B","B")
idB <- c("C","D","C","D","C","D","C","D","C","D")
colA <- c(0,2,3,0,0,3,9,5,6,1)
colB <- c(9,3,0,2,2,4,6,1,9,9)
colC <- c(0,0,5,7,3,9,8,1,2,3)
df <- data.frame(idA,idB,colA,colB,colC)
aggregate(.~idA+idB,df,FUN=NROW)
这种形式的aggregate 命令当然没有意义,因为所有列的行数都相同。
这是我正在寻找的结果:
idA idB colA colB colC
A C 1 2 2
B C 2 2 2
A D 1 2 1
B D 3 3 3
因此需要一个条件语句,只包括行> 0。或者,我确信通过data.table 有一个聪明的方法可以做到这一点。任何帮助将不胜感激!
【问题讨论】:
-
aggregate(.~ idA + idB, df , function(x) length(x[x > 0])) -
感谢@DavidArenburg!如果您发布您的评论作为答案,我会相应地标记它。
-
有人已经做了然后删除了
标签: r data.table aggregate subset