1

ほぼ 100 万行 (トランザクション) と 2600 列 (アイテム) の大きなデータ フレームがあります。データセットの値は 1 と NA です。すべての値のデータ型は factor です。各行のすべての 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 
}

しかし、実行時間は O(n^2) であるため、R スタジオで実行されているのは非常に長い時間です。それを行う他の方法や、このアルゴリズムを改善する方法があるかどうか疑問に思っていますか? (マシンには 80Gb のメモリがあります)

4

2 に答える 2

3

@joranが提案したように、(因子ではなく数値の)行列を使用する方が良いでしょう。

rowSums(your_matrix, na.rm = T)
于 2013-09-12T19:15:18.950 に答える