【发布时间】:2013-09-12 18:35:28
【问题描述】:
我有一个包含近 100 万行(事务)和 2600 列(项目)的大数据框。数据集中的值是 1 和 NA。所有值的数据类型都是因子。我想在数据框的末尾添加一个新列,该列显示每行中所有 1 的总和。
这是我写的 R 代码:
for(i in 1:nrow(dataset){
counter<-0
for(j in 1:ncol(dataset){
if(!is.na(dataset[i,j])){
counter<- counter+1
}
}
dataset[i,ncol(dataset)+1]<-counter
}
但是它在R studio中运行已经很长时间了,因为运行时间是O(n^2)。我想知道是否有其他方法可以做到这一点或改进这个算法? (机器有 80Gb 内存)
【问题讨论】:
-
如果您的数据只有 1 并且 NA 使用矩阵(或 data.table)而不是数据框。看看
?apply,或者如果太慢,Rcpp。
标签: r algorithm bigdata counting