R:根据在另一列中检测到的字符串从一列中提取数据

R:根据在另一列中检测到的字符串从一列中提取数据,r,string,R,String,我有一个大的数据集要总结。 这些数据是健康记录,每个人都检查过许多器官/组织,诊断以叙述形式输入。我想找到一些关键的诊断术语,然后我想知道哪些器官与诊断相关 范例 (所有条目都转换为字符串) 数据帧1 Organ Diagnosis lungs interstitial pneumonia liver hepatic congestion ; diffuse cerebrum traumatic disruption and he

我有一个大的数据集要总结。 这些数据是健康记录,每个人都检查过许多器官/组织,诊断以叙述形式输入。我想找到一些关键的诊断术语,然后我想知道哪些器官与诊断相关

范例 (所有条目都转换为字符串)

数据帧1

Organ          Diagnosis
lungs          interstitial pneumonia
liver          hepatic congestion ; diffuse
cerebrum       traumatic disruption and hemorrhage       
adrenal gland  focal hemorrhage
数据框架2

Keywords
congestion
hemorrhage
trauma
pneumonia
我想在
dataframe1$Diagnosis
中搜索与
dataframe2$Keywords
匹配的字符串, 对于每个匹配,返回在
dataframe1$Organe
的相应行中输入的器官

数据结构
dataframe1我们可以使用
grep

sapply(dataframe2$Keywords, function(x) 
       toString(trimws(dataframe1[,1][grep(x, dataframe1[,2])])))

我们可以使用
grep

sapply(dataframe2$Keywords, function(x) 
       toString(trimws(dataframe1[,1][grep(x, dataframe1[,2])])))

我认为返回与什么匹配的堆叠列表可能很有价值,如:

stack(
  sapply(dataframe2$Keywords, 
         function(x) dataframe1$Organ[grepl(x, dataframe1$Diagnosis)])
)

#         values        ind
#1         liver congestion
#2      cerebrum hemorrhage
#3 adrenal gland hemorrhage
#4      cerebrum     trauma
#5         lungs  pneumonia

我认为返回与什么匹配的堆叠列表可能很有价值,如:

stack(
  sapply(dataframe2$Keywords, 
         function(x) dataframe1$Organ[grepl(x, dataframe1$Diagnosis)])
)

#         values        ind
#1         liver congestion
#2      cerebrum hemorrhage
#3 adrenal gland hemorrhage
#4      cerebrum     trauma
#5         lungs  pneumonia

dataframe1$1非常糟糕!dataframe1$1非常糟糕!