我有两个表,table1 有一列字符串。我想在另一个表 table2 中找到每个字符串的匹配项,但在相应的 table2 列中,每个单元格都包含每个行条目的列表。
到目前为止,我已经弄清楚如何使用 grepl 来匹配特定的条目:
grepl(table1$label[i],table2$labels[[j]][k])
对于某些 i、j 和 k。i 和 j 是固定的,因为它们分别是表 1 和表 2 中的行数,但 k 是一些正值,所以我有这样的东西:
for (i in 1:nrow(table1)){
for (j in 1:nrow(table2){
for(k ?){
grepl(table1$label[i],table2$labels[[j]][k])
}
}
}
我不太确定要为 k 循环放什么。
一旦我确定了包含 table1 字符串的 table2 行,我想做的是报告来自不同 table2 列的相应值并将这些值附加到 table1 中的相应字符串行,所以我猜我'将需要更多的 for 循环......是否有诸如此类的多个引用问题的快捷方式?
一些示例数据(请注意,table2 列表中也缺少值,但我假设在匹配这些值时会被忽略,其他条目是字符类):
表格1
label
1 Tom
2 Gemma
3 Graham
表 2(更新)
item labels
1 Apple Tom, ,John, ,Terry,
2 Orange Bryan, ,Graham,
3 Pear Finn, ,Gemma, ,Graham,
输出
表格1
label item
1 Tom Apple
2 Gemma Pear
3 Graham Orange, Pear
从使用dput
我得到
Table1 <- structure(list(label = c("Tom", "Gemma", "Graham")), .Names = "label",
class = "data.frame", row.names = c(NA,
-3L))
Table2 <- structure(list(item = c("Apple", "Orange", "Pear"), labels = list(
structure(c("Tom", "", "John", "", "Terry", ""), .Dim = c(6L,
1L)), structure(c("Bryan", "", "Graham", ""), .Dim = c(4L,
1L)), structure(c("Finn", "", "Gemma", "", "Graham", ""), .Dim = c(6L,
1L)))), .Names = c("item", "labels"), row.names = c(NA, -3L
), class = "data.frame")
附录:关于我最初使用的grepl
,Table2中的一些标签与Table1中的标签只有部分匹配,但名称在Table1中是唯一的,所以我想申请匹配Table1标签,例如Graham
(Table1)到Graham
(Table2) 和Graham Green
(Table2) 例如
表 2(版本 2)
item labels
1 Apple Tom, ,John, ,Terry,
2 Orange Bryan, ,Graham,
3 Pear Finn, ,Gemma, ,Graham Green,
输出 Table1 将是相同的。