【问题标题】:R: Merge data frames based on substring matchR:基于子串匹配合并数据帧
【发布时间】:2018-03-18 08:14:38
【问题描述】:

我有两个数据框,我想按蛋白质登录名进行合并。

df1 是一个数据框,其中包含与基因相关的蛋白质登录名称(并且这些名称中有几个)。因此,df1 包含这些名称的“列表”,这些名称以字符串格式用分号分隔,具有在 df1 中不再出现的唯一值。我在下面将这些名称写为“A1,B1,...”:

df1:

Name                a.value
A1;B1;C1            ...
A2                  ...
A3;B3               ...
A4;B4;C4;D4;E4;F4   ...

df2 是一个数据框,每行仅包含这些种质之一:

df2:

Name  b.value
A2    ...
B3    ...
B4    ...

df1 和 df2 都包含其他列。

如果 df2 中的加入名称作为名称 df1 之一存在,我希望合并合并的数据框以便匹配行,如下所示:

A2   A2                 a.value  b.value
B3   A3;B3              ...      ...
B4   A4;B4;C4;D4;E4;F4  ...      ...

当然,这两个数据框中的其他列也包括在内。

非常感谢任何建议,如果您需要我详细说明,请告诉我。

谢谢!

【问题讨论】:

    标签: r regex dataframe merge substring


    【解决方案1】:

    这给出了请求的输出:

    l <- strsplit(as.character(df1$Name), ';')
    df1new <- data.frame(Name = unlist(l), Name.string = rep(df1$Name, lengths(l)))
    merge(df2, df1new, by = 'Name', all.x = TRUE)
    

    结果:

       Name       Name.string
    1:   A2                A2
    2:   B3             A3;B3
    3:   B4 A4;B4;C4;D4;E4;F4
    

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 2015-08-10
      • 2020-10-10
      • 2019-09-02
      相关资源
      最近更新 更多