我有大量的就诊记录数据框。每条记录(行)最多可以有 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
所以在这两行中,我想知道第 1 行有 7 个代码,第 2 行有 4 个代码。数据框是 31,596 行,因此循环花费的时间太长。我想使用“应用”语句来加快速度:
z = apply(y[,paste("diag", 1:11, sep="")], 1, function(x)sum({any(x[!is.na(x)])}))
R 只返回一个 1 的向量,其长度与数据集中的行数相同。我认为使用“任何”有问题吗?有没有人有一个好方法来计算多列中非 NA 值的数量?谢谢!