【发布时间】:2014-11-07 20:05:52
【问题描述】:
我有一个如下所示的数据集 (dat):
Team Person Performance1 Performance2
1 36465930 1 101
1 37236856 1 101
1 34940210 1 101
1 29135524 1 101
2 10318268 1 541
2 641793 1 541
2 32352593 1 541
2 2139024 1 541
3 35193922 2 790
3 32645504 2 890
3 32304024 2 790
3 22696491 2 790
我正在尝试识别并删除所有在 Performance1 或 Performance2 上存在差异的团队。因此,例如,示例中的团队 3 在性能 2 上存在差异,因此我想从数据集中删除该团队。这是我写的代码:
tda <- aggregate(dat, by=list(data$Team), FUN=sd)
tda1 <- tda[ which(tda$Performance1 != 0 | tda$Performance2 != 0), ]
问题是我的数据集中有超过 100,000 个团队,所以我的第一行代码需要很长时间,而且我不确定它是否会完成数据集的聚合。解决此问题的更有效方法是什么?
提前致谢! :)
真诚地, 艾米
【问题讨论】:
-
我认为像
df[!aggregate(.~Team, df, sd)[4] > 0, ]这样的东西会快得多。
标签: r aggregate aggregation large-data bigdata