我有两个数据框,我想通过蛋白质加入名称合并。
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 ... ...
当然,还包括来自两个数据帧的其他列。
非常感谢任何建议,如果您需要我详细说明,请告诉我。
谢谢!
答案 0 :(得分: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