大家,我的数据。框架就像:
id ACODE_ICD9_1 ACODE_ICD9_2 ACODE_ICD9_3
<int> <char> <char> <char>
1: 20 463 4660 4720
2: 27 42731 43490 73300
3: 48 40210 2722 43410
4: 52 40210 43410 4139
5: 57 40210 43410 4139
6: 58 40210 43410 4139
7: 59 4660 7242 7245
8: 77 40210 7804 7840
9: 98 42731 7804 78650
10: 101 463 4269 78052
....
我想通过我的 ICD 代码 grep 疾病, 还有其他方法可以简化吗? 因为我有很多疾病 它会让我的程序变得更复杂、可读性更差。
谢谢!
disease <- data %>%
mutate(AF = ifelse(grepl("^42731", ACODE_ICD9_1) |
grepl("^42731", ACODE_ICD9_2) |
grepl("^42731", ACODE_ICD9_3), 1, 0),
HTN = ifelse(grepl("^401|^402|^403|^404|^405", ACODE_ICD9_1) |
grepl("^401|^402|^403|^404|^405", ACODE_ICD9_2) |
grepl("^401|^402|^403|^404|^405", ACODE_ICD9_3), 1, 0),
DM = ifelse(grepl("^250", ACODE_ICD9_1) |
grepl("^250", ACODE_ICD9_2) |
grepl("^250", ACODE_ICD9_3), 1, 0)...
df %>%
mutate(AF = +if_any(-id, ~str_detect(., "^42731")),
HTN = +if_any(-id, ~grepl("^40[1-5]", .)),
DM = +if_any(-id, ~grepl("^250", .)))
id ACODE_ICD9_1 ACODE_ICD9_2 ACODE_ICD9_3 AF HTN DM
1: 20 463 4660 4720 0 0 0
2: 27 42731 43490 73300 1 0 0
3: 48 40210 2722 43410 0 1 0
4: 52 40210 43410 4139 0 1 0
5: 57 40210 43410 4139 0 1 0
6: 58 40210 43410 4139 0 1 0
7: 59 4660 7242 7245 0 0 0
8: 77 40210 7804 7840 0 1 0
9: 98 42731 7804 78650 1 0 0
10: 101 463 4269 78052 0 0 0