创建包含其他列元素的新列



我试图在包含一个原始列元素的数据框架中创建新列,并尝试了使用sapplyc和解嵌套的各种方法,但没有得到正确的结果。感兴趣的列是:df<-data_frame(file=c('U2_pN_Len', 'MM_pND_con', 'COS_CTL'))我想把_之间的部分分离到它们各自的列中。我尝试通过制作参考数据帧:df2<-data_frame(cell=c('U2', 'MM', 'COS'), insert=c('pND', 'pN', 'pGFP'), trt=c('Len', 'con', 'CTL')),并考虑使用if命令,如果原始数据帧的一个方面与df2的每列的某些方面相匹配,那么它将打印该匹配,即我希望我的最终数据帧看起来像:

out<-data_frame(file=c('U2_pN_Len', 'MM_pND_con', 'COS_CTL'), cell=c('U2', 'MM', 'COS'), insert=c('pND', 'pN', 'pGFP'), trt=c('Len', 'con', 'CTL'))

谁有任何建议,如何做到这一点使用任何命令?

在这种方法中,df2中的每一列都成为str_extract中要检查的一组术语。根据数据集中实际列表的大小,这可能会变得笨拙。

library(tidyverse)
df<-tibble(file=c('U2_pN_Len', 'MM_pND_con', 'COS_CTL'))
df2<-tibble(cell=c('U2', 'MM', 'COS'), insert=c('pND', 'pN', 'pGFP'), trt=c('Len', 'con', 'CTL'))
cell = str_c(df2$cell, collapse = "|")
insert = str_c(df2$insert, collapse = "|")
trt = str_c(df2$trt, collapse = "|")

df %>%
mutate(cell = str_extract(file, cell),
insert = str_extract(file, insert),
trt = str_extract(file, trt))
#> # A tibble: 3 × 4
#>   file       cell  insert trt  
#>   <chr>      <chr> <chr>  <chr>
#> 1 U2_pN_Len  U2    pN     Len  
#> 2 MM_pND_con MM    pND    con  
#> 3 COS_CTL    COS   <NA>   CTL

创建于2022-12-09与reprex v2.0.2

最新更新