【发布时间】:2020-03-29 08:17:37
【问题描述】:
我有一列具有唯一标识符的值,如下所示:
df$1 <– c("identifier:ab134:4sfh", "identifier:gh164:9sgh", "identifier:3h1v4:kk9gh"
其中一些位于具有 71 列的单独数据框中的另一列中,但在该数据框中,它们通常像这样聚集:
df2$1 <– c(""identifier:ab134:4sfh|identifier:gh164:9sgh", "identifier:sfghskg8:kk9gh|identifier:fj893n:9sgh|identifier:gh164:9sgh",...)
我需要在第二个数据框中找到所有包含任何标识符的行。我会拆分列,但我想保持第二个数据集的其余部分不变。
我尝试过两种方式都使用此代码(即 df1 %in% df2 和 df2 %in% df1),但显然它并没有给我所有匹配项,因为它试图匹配整个字符串而不是子字符串:
new_subset <- subset(df$1, trimws(1) %in% trimws(df2$1))
有什么建议吗?提前感谢您的帮助!
【问题讨论】:
-
我真的不确定我可以添加什么。我需要为每一行匹配,并且我使用了上面的代码(不起作用)。
-
如果你可以为你展示的向量提供预期的输出,这将有助于
lapply(v1, function(x) unlist(lapply(strsplit(v2, "|", fixed = TRUE), function(y) match(x, y))))也可以试试grep(df2$1, df$1) -
所以我尝试了这个,我得到了一个很长的列表,如下所示: 8806 列表 $ : int [1:14037] NA NA NA NA NA NA NA NA NA NA ... $ :整数 [1:14037] 不适用 不适用 不适用 不适用 不适用NA NA NA NA NA NA NA NA ...
-
我想要一个如下所示的输出:df$2
-
您的代码中有不匹配的引号
标签: r