【发布时间】:2015-01-22 07:08:42
【问题描述】:
我正在尝试聚合一个数据框,但遇到了一个我不明白的错误。我有一个名为 M15 的数据框,它包含 33 个变量的 200k+ 条记录。我无法使用可以与社区共享的数据来重现此错误。
M15<-M15backup[c(600:700),]
# setting the fields to roll up
aggField<-c('Location','EEStatus')
# group by rest of fields
byField<-setdiff(x=colnames(M15),y=aggField)
# example uses built in function, my production code uses a custom
M15.2<-aggregate(x=M15[aggField],
by=M15[byField],
FUN=length
)
如果我在第一行调整 600:700,我可以让脚本在数据帧的小块上运行,但如果我为整个数据帧运行,我会收到以下形式的错误:
Error in `[[<-.data.frame`(`*tmp*`, len + i, value = c("All Locations", :
replacement has 341 rows, data has 394
有人可以解释这个错误的含义和/或建议处理它的方法吗?
【问题讨论】:
-
x中的aggregate变量不能有两列。您需要将它们组合成一个向量。aggregate对于这么多行也会非常慢。使用data.table或 SQL 数据库。 -
我的实际经验不同意你的说法:“如果我在第一行调整 600:700,我可以让脚本在数据框的小块上运行”
-
此外,如果我删除我要聚合的变量之一并针对相同的观察子集运行,我仍然会得到相同的错误。
标签: r