【问题标题】:Combine/ merge Dataframe based on multi values in column in R基于R中列中的多个值组合/合并Dataframe
【发布时间】:2021-04-20 18:54:45
【问题描述】:

我已经能够像这样合并数据框:

df1 <- read.table(text="
   col1    col2    colx 
    A        5    hh
    B        3    jj
    C        6    kk
    E        7    mm", header=TRUE, stringsAsFactors=FALSE)

df2 <- read.table(text="
   col3    col4    coly
    A       5    be
    B       3    to
    C       6    go
    E       7   yo
    ", header=T, stringsAsFactors=FALSE)

full_join(df1, df2, by = c('col1'='col3',"col2" = "col4"))

这给了我这个:

  col1 col2 colx coly
1    A    5   hh   be
2    B    3   jj   to
3    C    6   kk   go
4    E    7   mm   yo

但现在我需要将 df1 与 df3 合并,例如 'A' %in% 'A | B'

df3 <- read.table(text="
   col3        col4    coly
   'A | B'       5      be
   'B | C'       3      to
    C            6      go
    E            7      yo
    ", header=T, stringsAsFactors=FALSE)

这可能吗?

【问题讨论】:

    标签: r join merge


    【解决方案1】:

    也许我们可以在删除|前后的空格后使用regex_full_join

    library(dplyr)
    library(fuzzyjoin)
    library(stringr)
    df3 %>%
         mutate(col3 = str_remove_all(col3, "\\s+")) %>%
         regex_full_join(df1, ., by = c('col1' = 'col3', 'col2' = 'col4'))
    

    -输出

    #  col1 col2 colx col3 col4 coly
    #1    A    5   hh  A|B    5   be
    #2    B    3   jj  B|C    3   to
    #3    C    6   kk    C    6   go
    #4    E    7   mm    E    7   yo
    

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 2023-02-14
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多