我正在使用一个包含诊断编码的数据集,我试图看看discharge_codes中是否有follow_up_code个.遗憾的是,放电代码是作为字符串而不是向量提供的.

mre <- tribble(
 ~patient_id, ~discharge_codes, ~follow_up_code,
 1234       , "A_B_C"         , "A",
 4567       , "D_E_F"         , "C",
 7890.      , "A_C_E".        , "E"
)

我曾try 使用flatten_chr()str_split()来搜索follow_up_code %in% discharge_codes,但这将discharge_codes完全展平(而不是按患者),并使用rowwise() %>% mutate(... flatten_chr())个错误作为".x必须是一个列表,而不是一个字符向量".

我觉得我肯定错过了什么,要么是我正在采取的方法,要么是有更直接的方法来实现这一点?

推荐答案

您可以将文本列转换为字符向量,然后查看代码是否在该向量内.这样做的好处是,如果需要,discharge_codes现在可以用于其他用途.

library(dplyr)
library(purrr)
library(stringr)

mre %>% 
  mutate(discharge_codes = str_split(discharge_codes, "_"),
         match = map2_lgl(discharge_codes, follow_up_code, ~ .y %in% .x))

您可以看到,discharge_codes现在是一个包含字符向量的列表列.

# A tibble: 3 x 4
  patient_id discharge_codes follow_up_code match
       <dbl> <list>          <chr>          <lgl>
1       1234 <chr [3]>       A              TRUE 
2       4567 <chr [3]>       C              FALSE
3       7890 <chr [3]>       E              TRUE 

R相关问答推荐

使用split.zoo界定xts物体的降水事件

R:随机抽取所有可能排列的样本

feature_weights参数没有影响Xgboost

R:如何自动化变量创建过程,其中我需要基于ifelse()为现有变量的每个级别创建一个单独的变量

如何计算前一行的值,直到达到标准?

任意列的欧几里得距离

通过使用str_detect对具有相似字符串的组进行分组

整数成随机顺序与约束R?

R Sapply函数产生的值似乎与for循环方法略有不同

根据多个条件增加y轴高度以适应geom_text标签

删除列表中存储的数据帧内和数据帧之间的重复行

将嵌套列表子集化为嵌套列表

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

如何同时从多个列表中获取名字?

当我们有多个反斜杠和/特殊字符时使用Gsubing

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

判断函数未加载R中的库

R仅当存在列时才发生变异

如何从嵌套数据中自动创建命名对象?在R中

排序R矩阵的行和列