私は医師の診察記録の大きなデータフレームを持っています。リストされている11の診断コードの少なくとも1つが、関心のある特定の診断コードのセットで見つかった行のみを選択したいと思います。
データフレームは18列×39,019行です。6:16列の診断コードに興味があります。これらの11の診断列のみのデータサンプルを次に示します(識別可能な情報を保護するため)。
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
これが私が使おうとしたコードです:
mydiag <- c(401, 410, 411, 413, 415:417, 420:429, 434, 435, 444, 445, 451, 460:466, 480:486, 490:493, 496, 786)
y = apply(dt[,paste("diag", 1:11, sep="")], 1, function(x) sum((any(x !=NA %in% mydiag))))
y = as.data.frame(y)
ご覧のとおり、私が提供した2つの例の行では、最初の行を保持したいのですが、必要なコードがないため、2番目の行を破棄します。私が提供したコードサンプルは機能しません-39,019"1"値のベクトルを取得します。したがって、applyステートメントは論理的なものとして読み取られていると思いますが、すべての行に対象のコードがあるわけではないことを知っているので、その場合は1と0を期待していました。
この行選択タスクを実行するためのより良い方法はありますか?