R:在多个列中搜索因子

R:在多个列中搜索因子,r,R,我有一个包含多个列的大型数据帧(大约150列)。 有一系列列(Dx1、Dx2..直到Dx30)是诊断代码(代码是数字,但它们是分类变量,与使用ICD-9编码系统的医疗诊断相对应) 我有工作代码来搜索单个列,但需要搜索所有30列,以查看是否有任何列包含指定范围(DXrange)内的代码 核心数据帧如下所示: Case DX1 DX2 DX3 DX4...DX30 1 123 345 567 99 12 2 234 345 NA NA N

我有一个包含多个列的大型数据帧(大约150列)。
有一系列列(Dx1、Dx2..直到Dx30)是诊断代码(代码是数字,但它们是分类变量,与使用ICD-9编码系统的医疗诊断相对应)

我有工作代码来搜索单个列,但需要搜索所有30列,以查看是否有任何列包含指定范围(DXrange)内的代码

核心数据帧如下所示:

Case  DX1   DX2   DX3  DX4...DX30
1     123   345   567  99    12
2     234   345   NA   NA    NA
3     456   567   789  345   34
以下是工作代码:

## Defines a range of codes to search for    
DXrange <- factor(41000:41091, levels = levels(core$DX1)) 

## Search for the DXrange codes in column DX1.  

core$IndexEvent <- core$DX1 %in% DXrange & substr(core$DX1, 5, 5) != 2

## What is the frequency of the IndexEvent?
    cat("Frequency of IndexEvent : \n"); table(core$IndexEvent)
##定义要搜索的代码范围

DXrange在代码中搜索之前,我会首先规范化数据,例如以下示例:

set.seed(314)

df <- data.frame(id = 1:5,
                 DX1 = sample(1:10,5),
                 DX2 = sample(1:10,5),
                 DX3 = sample(1:10,5))

require(dplyr)
require(tidyr)

df %>% 
  gather(key,value,-id) %>%
  filter(value %in% 1:2)
set.seed(314)
df%
聚集(键,值,-id)%%>%
筛选器(值%1:2中的%1)
或者只使用基本R

df.long <- do.call(rbind,lapply(df[,2:4],function(x) data.frame(id = df$id, DX = x)))

df.long[df.long$DX %in% 1:2, ]

df.long在搜索代码之前,我会首先规范化我的数据,例如以下示例:

set.seed(314)

df <- data.frame(id = 1:5,
                 DX1 = sample(1:10,5),
                 DX2 = sample(1:10,5),
                 DX3 = sample(1:10,5))

require(dplyr)
require(tidyr)

df %>% 
  gather(key,value,-id) %>%
  filter(value %in% 1:2)
set.seed(314)
df%
聚集(键,值,-id)%%>%
筛选器(值%1:2中的%1)
或者只使用基本R

df.long <- do.call(rbind,lapply(df[,2:4],function(x) data.frame(id = df$id, DX = x)))

df.long[df.long$DX %in% 1:2, ]

df.long我们可以使用
filter\u at
任何变量

df %>% 
  filter_at(vars(matches("DX\\d+")), any_vars(. %in% DXrange))
在哪里


DXrange我们可以使用
filter\u at
任何变量

df %>% 
  filter_at(vars(matches("DX\\d+")), any_vars(. %in% DXrange))
在哪里


DXrange您说过它是一个工作代码,但除非您共享
core
数据集,否则它不会工作。请学习如何制作一个可复制的示例:谢谢。更新了问题以包含核心数据框架的子集。您应该添加一些创建一些示例数据的R代码。我建议使用我和一些合作者创建的CRAN包:icd。它可以处理医疗代码的长格式或宽格式数据帧,包括ICD-9和ICD-10代码,并使用标准同行评审或自定义组定义将其分配给组。它的速度非常快,在过去五年中,世界各地的研究人员都在使用和贡献它,并在最初的文章中得到验证。希望你觉得有用。您说过这是一个有效的代码,但除非您共享
核心
数据集,否则它不会起作用。请学习如何制作一个可复制的示例:谢谢。更新了问题以包含核心数据框架的子集。您应该添加一些创建一些示例数据的R代码。我建议使用我和一些合作者创建的CRAN包:icd。它可以处理医疗代码的长格式或宽格式数据帧,包括ICD-9和ICD-10代码,并使用标准同行评审或自定义组定义将其分配给组。它的速度非常快,在过去五年中,世界各地的研究人员都在使用和贡献它,并在最初的文章中得到验证。希望你觉得有用。谢谢你的建议。我不确定样本(1:10,5)的目的是什么,谢谢你的建议。我不确定样本(1:10,5)的目的是什么