R中大数据的计数算法
我有一个大数据框架,有将近100万行(事务)和2600列(项目)。数据集中的值为1和NA。所有值的数据类型都是因子。我想在数据框的末尾添加一个新列,显示每行中所有1的总和 这是我写的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 }
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)))