我有一个超过120000行的data.frame,它看起来像这样
> head(mydf)
ID MONTH.YEAR VALUE
1 110 JAN. 2012 1000
2 111 JAN. 2012 1000
3 121 FEB. 2012 3000
4 131 FEB. 2012 3000
5 141 MAR. 2012 5000
6 142 MAR. 2012 4000
Run Code Online (Sandbox Code Playgroud)
我想拆分data.frame依赖于MONTH.YEAR和VALUE列,并计算每个组的行,我的期望答案应该是这样的
MONTH.YEAR VALUE count
JAN. 2012 1000 2
FEB. 2012 3000 2
MAR. 2012 5000 1
MAR. 2012 4000 1
Run Code Online (Sandbox Code Playgroud)
我试图拆分它并使用sapply计数每组的数量,这是我的代码
sp <- split(mydf, list(mydf$MONTH.YEAR, mydf$VALUE), drop=TRUE);
result <- data.frame(yearandvalue = names(sapply(sp, nrow)), count = sapply(sp, nrow))
Run Code Online (Sandbox Code Playgroud)
但我发现这个过程很慢.是否有更有效的方式来表达这一点?非常感谢你.
尝试
aggregate(ID~., mydf, length)
Run Code Online (Sandbox Code Playgroud)
要么
library(dplyr)
mydf %>%
group_by(MONTH.YEAR, VALUE) %>%
summarise(count=n())
Run Code Online (Sandbox Code Playgroud)
要么
library(data.table)
setDT(mydf)[, list(count=.N) , list(MONTH.YEAR, VALUE)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |