他の35個のベクトルを合計した新しいベクトルを作成しようとしています。問題はNA値がたくさんあることですが、この特定の用途では、それらをゼロとして扱いたいと思います。 35のベクトルのいずれかにNAが含まれている場合、結果はNAになるため、ベクトルを追加しても機能しません。これは問題の例です:
col1<-c(NA,1,2,3)
col2<-c(1,2,3,NA)
col3<-c(NA,NA,2,3)
Sum<-col1+col2+col3
Sum
# [1] NA NA 7 NA
結果を1、3、7、6にしたい。
NAを0に置き換えた各ベクターの新しいバージョンを作成できると思いますが、35個のベクターに適用すると、多くの作業になります。私を助ける簡単な機能はありますか?
rowSums
関数を使用することもできます:
rowSums( cbind (col1,col2,col3), na.rm=TRUE)
#[1] 1 3 7 6
?rowSums # also has colSums described on same help page
最初にそれらを行列に入れます:
apply(cbind(col1,col2,col3),1,sum,na.rm = TRUE)
[1] 1 3 7 6
Rの組み込みドキュメントを使用して、ここで各関数について読むことができます:?apply
、?cbind
。
cbind
は「列バインド」の略です。複数のベクトルまたは配列を受け取り、それらを「列ごと」に1つの配列にバインドします。
cbind(col1,col2,col3)
col1 col2 col3
[1,] NA 1 NA
[2,] 1 2 NA
[3,] 2 3 2
[4,] 3 NA 3
apply
、まあ、applies関数(この場合はsum
)を行列の行または列に適用します。これにより、na.rm = TRUE
引数をsum
に追加すると、NA値が削除されます。