我有大量的就诊记录数据框。我只想选择在我感兴趣的一组指定诊断代码中至少找到列出的 11 个诊断代码中的一个的行。
数据框为 18 列 x 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 个示例行中,我想保留第一行但丢弃第二行,因为它没有我想要的任何代码。我提供的代码示例不起作用——我得到了一个包含 39,019 个“1”值的向量。所以我猜apply语句被解读为某种逻辑,但我知道并非所有行都有感兴趣的代码,所以在这种情况下我会期望1和0。
有没有更好的方法来完成这个行选择任务?