簡體   English   中英

如何將數據幀拆分兩列,並根據組計算行數更有效

[英]how can I split a dataframe by two columns and count number of rows based on group more efficient

我有一個超過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

我想拆分data.frame取決於MONTH.YEARVALUE列,並計算每組的行數,我的期望答案應該是這樣的

MONTH.YEAR VALUE count
JAN. 2012  1000  2
FEB. 2012  3000  2
MAR. 2012  5000  1
MAR. 2012  4000  1

我試圖拆分它並使用sapply計數每組的數量,這是我的代碼

sp <- split(mydf, list(mydf$MONTH.YEAR, mydf$VALUE), drop=TRUE);
result <- data.frame(yearandvalue = names(sapply(sp, nrow)), count = sapply(sp, nrow))

但我發現這個過程很慢。 是否有更有效的方式來表達這一點? 非常感謝你。

嘗試

aggregate(ID~., mydf, length)

要么

library(dplyr)
 mydf %>%
    group_by(MONTH.YEAR, VALUE) %>%
    summarise(count=n())

要么

library(data.table)
setDT(mydf)[, list(count=.N) , list(MONTH.YEAR, VALUE)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM