私は医師の診察記録の大きなデータフレームを持っています。各レコード(行)には、最大11個の診断コードを含めることができます。各行にNA以外の診断コードがいくつあるか知りたいです。
データのサンプルは次のとおりです。
diag1 diag2 diag3 diag4 diag5 diag6 diag7 diag8 diag9 diag10 diag11
786 272 401 782 250 91912 530 NA NA NA NA
845 530 338 311 NA NA NA NA NA NA NA
したがって、これらの2つの行では、行1に7つのコードがあり、行2に4つのコードがあることを知りたいと思います。データフレームは31,596行であるため、ループに時間がかかりすぎています。「apply」ステートメントを使用して処理を高速化したいと思います。
z = apply(y[,paste("diag", 1:11, sep="")], 1, function(x)sum({any(x[!is.na(x)])}))
Rは、データセットの行数と同じ長さの1のベクトルを返すだけです。「any」の使用に何か問題があると思いますか?複数の列にわたる非NA値の数を数える良い方法はありますか?ありがとう!