gpt4 book ai didi

R:根据出现在某些列中的一组感兴趣的值从数据框中选择行

转载 作者:行者123 更新时间:2023-12-04 18:12:34 24 4
gpt4 key购买 nike

我有一个很大的医生就诊记录数据框。我只想选择那些在我感兴趣的指定诊断代码集中至少找到列出的11个诊断代码中的一个的行。

数据帧为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个示例行中,我想保留第一行,但丢弃第二行,因为它没有我想要的任何代码。我提供的代码示例不起作用-我得到39,019个“1”值的向量。因此,我猜想apply语句是以某种逻辑被读取,但是我知道并非所有行都有感兴趣的代码,因此在这种情况下,我期望的是1和0。

有没有更好的方法来执行此行选择任务?

最佳答案

我认为您使用!=NA位使事情变得过于复杂。由于NA没有出现在mydiag中,因此您可以将其完全删除。因此,您的apply语句可以变成:

goodRows <- apply(dat, 1, function(x) any(x %in% mydiag))
dat[goodRows,]
#---------------
diag1 diag2 diag3 diag4 diag5 diag6 diag7 diag8 diag9 diag10 diag11
1 786 272 401 782 250 91912 530 NA NA NA NA

关于R:根据出现在某些列中的一组感兴趣的值从数据框中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com