统计大R数据集中多列中诊断代码的出现情况



我使用两年的NIS数据(已经合并(在所有DX列中搜索诊断代码。列从I10_DX1开始到I10_DX40(它们是列#18-57(。我想创建一个新的数据集,在这些列中的任何一列中都有这个诊断代码的观察结果。

我试过回路和ICD软件包,但都没能把它做好。最近尝试的代码如下:

get_icd_labels(icd3 = c("J80"), year = 2018:2019) %>%
arrange(year, icd_sub) %>% 
filter(icd_sub %in% c("J80") %>% 
select(year, icd_normcode, label) %>% 
knitr::kable(row.names = FALSE)

这是一个tidyverse(dplyr(解决方案。如果你还没有为每条记录都有一个唯一的id,我会先添加一个。

df <-
df %>%
mutate(my_id = row_number())

接下来,我将诊断代码收集到一个表中,其中每个记录都是一个诊断。

diagnoses <-
df %>%
select(my_id, 18:57) %>%
gather("diag_num","diag_code",2:ncol(.)) %>%
filter(!is.na(diag_code)) #No need to keep a bunch of empty rows

最后,我将把我原来的df加入到诊断数据框架中,并过滤我想要的代码。

df %>%
inner_join(diagnoses, by = "my_id") %>%
filter(diag_code == "J80")

最新更新