r - R中大数据的计数算法

标签 r algorithm bigdata counting

我有一个大数据框,其中包含近 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/

相关文章:

在 ggplot2 geom_text 中以彩色呈现 unicode 表情符号

r - 在公式/字符串中的任意数量的函数周围添加 "'

R网络抓取包无法读取所有url表

java - 找出前N个最流行的元素

algorithm - 我应该使用哪种算法来分析所有商品之间的关系?

php - 查找超过 100K 个位置之间的距离

r - 如何在R中找到字符串的长度

python - 棘手的中位数问题

algorithm - 数据集大小会影响机器学习算法吗?

r - 分段读取 CSV 文件的策略?