我正在使用一个非常大的患者记录数据库。基本上我正在尝试根据某些诊断代码对患者进行分类。每个患者可能有 btw 1-10 诊断代码(DX1、DX2、DX3、DX4、DX5、DX6、DX7、DX8、DX9、DX10)。我很难使用多个条件进行编码以过滤每个 DX 列,因为它们可以采用不同的排列方式。
Example Dataset:
DX1<-c("05", "89", "99", "87", "05", "67")
DX2<-c("87", "05", "21", "26", "23", "44","89", "13", "2" )
DX3<-c("04", "99","23", "05", "57", "16", "90", "89", "87")
DX4<-c("05", "26","21")
DX5<-c("67", "86","44", "63", "18", "87", "87", "05")
DX6<-c("75", "06","24", "02", "86", "15", "01", "87")
DX7<-c("86", "87","66", "56", "65", "05", "72")
install.packages("qpcR")
library("qpcR")
Patientdata <- qpcR:::cbind.na(DX1, DX2, DX3, DX4, DX5, DX6, DX7)
data.frame(Patientdata)
DX1 DX2 DX3 DX4 DX5 DX6 DX7
1 05 87 04 05 67 75 86
2 89 05 99 26 86 06 87
3 99 21 23 21 44 24 66
4 87 26 05 NA 63 02 56
5 05 23 57 NA 18 86 65
6 67 44 44 NA 87 15 05
7 NA 89 90 NA 87 01 72
8 NA 13 89 NA 05 87 NA
9 NA 2 87 NA NA NA NA
我想用 (05, or 5 or 02 or 2 or 62) AND (87 or 087 or 0086 or 089 or 89) 过滤所有有 DX 的患者
Patientdata<- Patientdata%>% mutate_at(vars(DX1, DX2, DX3, DX4, DX5, DX6, DX7),
Diagnosis= ifelse(. %in% c("05"| "5"| "02"| "2"| "36"| "62"|"0062") &
c("87"| "087"| "86"| "0086"| "89"| "089"), "Yes"))
我想要的是:
| ID | DX1 | DX2 | DX3 | DX4 | DX5 | DX6 | DX7 | 诊断 |
|---|---|---|---|---|---|---|---|---|
| 1 | 05 | 87 | 04 | 05 | 67 | 75 | 86 | 是的 |
| 2 | 89 | 05 | 99 | 26 | 86 | 06 | 87 | 是的 |
| 3 | 99 | 21 | 23 | 21 | 44 | 24 | 66 | |
| 4 | 87 | 26 | 05 | 不适用 | 63 | 02 | 56 | 是的 |
| 5 | 05 | 23 | 57 | 不适用 | 18 | 86 | 65 | |
| 6 | 67 | 44 | 46 | 不适用 | 87 | 15 | 05 | 是的 |
| 7 | 不适用 | 89 | 90 | 不适用 | 87 | 01 | 72 | |
| 8 | 不适用 | 13 | 89 | 不适用 | 05 | 87 | 不适用 | 是的 |
| 9 | 不适用 | 2 | 87 | 不适用 | 不适用 | 不适用 | 不适用 | 是的 |
任何帮助深表感谢!