R 按另一个字符串中存在的字符串合并数据帧

R 按另一个字符串中存在的字符串合并数据帧,r,regex,string,merge,R,Regex,String,Merge,我有两个数据帧,df1有一个字符串字段,其中包含用逗号分隔的短语(一到10个短语),而df2有一个字符串字段,其中包含一到三个用逗号分隔的短语。只有当df1中存在所有df2字符串短语时,我才想合并这两个短语。这是一个例子 df1<-matrix(c("aa, bb, cc, dd", "aaa, bbb, ccc, dddd", "ab, bcc, bdd", 10, 20, 30),3,2) colnames(df1) <- c("Name", "Value") df2<-

我有两个数据帧,
df1
有一个字符串字段,其中包含用逗号分隔的短语(一到10个短语),而
df2
有一个字符串字段,其中包含一到三个用逗号分隔的短语。只有当
df1
中存在所有
df2
字符串短语时,我才想合并这两个短语。这是一个例子

df1<-matrix(c("aa, bb, cc, dd", "aaa, bbb, ccc, dddd", "ab, bcc, bdd", 10, 20, 30),3,2)
colnames(df1) <- c("Name", "Value")

df2<-matrix(c("aa, bb", "aaa, bbb, ccc", "cc, dd", "dddd", "bcc, bdd", 1, 2, 3, 4, 5),5,2)
colnames(df2) <- c("Name", "ID")
df1使用-


用于合并的短语是否是独占的,这意味着
df1
中最多有一行包含
df2
中特定行的所有字符串短语?这些短语是关于数据帧的,但示例代码是关于矩阵的。您正在矩阵中存储名称和值;请注意,矩阵将所有值强制为一种类型,在本例中为字符。你能说清楚你到底想做什么吗?我们可以看到
“aa,bb”
“aa,bb,cc,dd”
匹配,那么
“cc,dd”
是否也与
“aa,bb,cc,dd”
匹配?对不起,我刚刚制作了矩阵来说明这个问题。我的原始数据是从csv文件中读取的。我使用了dataframe,但对任何更好的方法都持开放态度。合并不是排他性的,它是n对n的关系。谢谢Vivek。我拿到钥匙了。但在我的原始数据中,Keys是一个包含200多个对象的列表,cbind不起作用。对于df2上的每条记录,在df1上有许多匹配项。我能够使用这种方法获得结果。谢谢
df3<-matrix(c("aa, bb", "aaa, bbb, ccc", 1, 2, 10, 20),2,3)
colnames(df3) <- c("Name", "ID", "Value")
regs <- sapply(df2[,1], function(x){paste0("\\b",x,"\\b")})
keys <- sapply(regs, function(x){grep(x, df1[,1])})
df4 <- cbind(df2,df1[keys,2])
colnames(df4) <- c("Name", "ID", "Value")
     Name            ID  Value
[1,] "aa, bb"        "1" "10" 
[2,] "aaa, bbb, ccc" "2" "20" 
[3,] "cc, dd"        "3" "10" 
[4,] "dddd"          "4" "20" 
[5,] "bcc, bdd"      "5" "30"