【发布时间】:2021-04-06 19:02:54
【问题描述】:
我正在使用一个非常大的患者记录数据库。 基本上我试图根据某些诊断代码对患者进行分类。 每位患者可能有 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、5 或 02 或 2 或 62)AND(87 或 087 或 0086 或 089 或 89)
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 | Diagnosis |
|---|---|---|---|---|---|---|---|---|
| 1 | 05 | 87 | 04 | 05 | 67 | 75 | 86 | Yes |
| 2 | 89 | 05 | 99 | 26 | 86 | 06 | 87 | Yes |
| 3 | 99 | 21 | 23 | 21 | 44 | 24 | 66 | |
| 4 | 87 | 26 | 05 | NA | 63 | 02 | 56 | Yes |
| 5 | 05 | 23 | 57 | NA | 18 | 86 | 65 | |
| 6 | 67 | 44 | 46 | NA | 87 | 15 | 05 | Yes |
| 7 | NA | 89 | 90 | NA | 87 | 01 | 72 | |
| 8 | NA | 13 | 89 | NA | 05 | 87 | NA | Yes |
| 9 | NA | 2 | 87 | NA | NA | NA | NA | Yes |
非常感谢任何帮助!
【问题讨论】:
-
ID5 也应该保留吗? -
是的,对不起,我只是在编造例子