【发布时间】:2013-07-16 15:07:39
【问题描述】:
我看到 ddply 很好地按变量汇总和分组。我希望 ddply 只扫描一次非常大的数据帧,并为我提供多个变量的计数(长度)。如何才能做到这一点?例如:
inc <- c('inc123', 'inc332', 'inc231', 'inc492', 'inc872', 'inc983')
hw <- c('ss23', 'ss43', 'ss98', 'ss98', 'ss23', 'ss23')
app <- c('lkl', 'dsd', 'lkl', 'jhj', 'lkl', 'dsd')
srvc <- c('rr', 'oo', 'rr', 'qq', 'qq', 'pp')
df <- data.frame(inc, hw, app, srvc)
ddply(df, .(hw), summarise, count = length(inc))
上面将给我计算唯一硬件的数量。如果我这样做了
ddply(df, .(hw, app, srvc), summarise, count = length(inc))
我的目标失败了——因为 ddply 采用了硬件、应用程序、srvc 的每个“独特”组合并计算了这些组合。
有没有办法一次性获得所有 3 个变量的计数?期望得到的 df 是这样的:(可能有不同的行数)。
hw count
1 ss23 3
2 ss43 1
3 ss98 2
app count
1 dsd 2
2 jhj 1
3 linux 1
4 lkl 2
srvc count
1 oo 1
2 pp 1
3 qq 2
4 rr 2
【问题讨论】:
-
它似乎与 plyr 的 split-and-apply 策略不兼容:您要求将 data.frame 拆分为 11 个不相交的组。
-
我现在明白了。使用“唯一”还需要我为每个变量运行一次。