R中大数据的计数算法

R中大数据的计数算法,r,algorithm,bigdata,counting,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 }

我有一个大数据框架,有将近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 
}
for(1中的i:nrow(数据集){
正如@joran所建议的那样,使用矩阵(由数字组成,而不是由因子组成)计数器会更好,只需:

rowSums(your_matrix, na.rm = T)
正如@joran所建议的,使用矩阵(由数字而非因子组成)会更好,只需:

rowSums(your_matrix, na.rm = T)
在您的情况下,最好的解决方案是将代码矢量化(意思是:一次对所有行进行操作):

在您的情况下,最好的解决方案是将代码矢量化(意思是:一次对所有行进行操作):


如果您的数据只有1个,NAs使用矩阵(或数据表)而不是数据帧。请查看
?应用
,或者如果速度太慢,请使用Rcpp。如果您的数据只有1个,NAs使用矩阵(或数据表)而不是数据帧。请查看
?应用
,或者如果速度太慢,请使用Rcpp。
dataset[i,ncol(dataset)+1]<-counter 
dataset$no_of_1s <- Reduce(function(a,b) a+!is.na(b), dataset, init=integer(nrow(dataset)))