1
我有一個data.table
我想總結。它看起來像:R:data.table中的聚合和重用變量
> DF
new_src action
1: cdn.adnxs.com 1
2: cdn.adnxs.com 1
3: cdn.adnxs.com 1
4: cdn.adnxs.com 3
5: s1.2mdn.net 1
6: cdn.adnxs.com 3
7: cdn.adnxs.com 3
8: cdn.adnxs.com 3
9: cdn.adnxs.com 3
10: cdn.adnxs.com 3
我想new_src
聚集,通過action
發現出現頻率最高,計算頻率,打印此action
,打印總量。 我可以使用table
在ddply
中執行此操作,並重復使用ddply
中的變量,因此我不需要多次運行table
。 我需要在data.table
中做到這一點,但我不能重用table
結果,我必須運行table
兩次。
例子。這工作:
DF = structure(list(new_src = c("cdn.adnxs.com", "cdn.adnxs.com",
"cdn.adnxs.com", "cdn.adnxs.com", "s1.2mdn.net", "cdn.adnxs.com",
"cdn.adnxs.com", "cdn.adnxs.com", "cdn.adnxs.com", "cdn.adnxs.com"), action = c("1", "1", "1", "3", "1", "3", "3", "3", "3", "3")), .Names = c("new_src", "action"), class = c("data.table", "data.frame"), row.names = c(NA, -10L))
dt = DF[1:10,by=list(new_src),list(tb = sort(table(action),decreasing=T)[1], nm = names(sort(table(action),decreasing=T)[1]),tot = .N)]
View(dt)
ddpl = ddply(DF,.(new_src),summarize,tb = sort(table(action),decreasing=T)[1], nm = names(tb), tot = length(new_src))
View(ddpl)
這不。
dt = DF[1:10,by=list(new_src),list(tb = sort(table(action),decreasing=T)[1], nm = names(tb),tot = .N)]
這可能與data.table
?由於
太棒了!非常感謝你。我的代碼的那部分運行速度快了很多,現在我不會運行'table'兩次! –