我有一个大数据框,其中包含近 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内存)
最佳答案
如@joran 所建议的那样,使用矩阵(数字,而不是因子)会更好,只需执行以下操作:
rowSums(your_matrix, na.rm = T)
关于r - R中大数据的计数算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771903/