首页 > 解决方案 > 基于列中的多个值进行过滤

问题描述

我在根据列中的多个值过滤数据框时遇到一些问题。

我有两个看起来像这样的数据框:

第一个数据框:

r <- data.frame(d = c("100", "100,111", "100,111,123", "112"), r = c("3", "3,6,7", "42,57", "7"))

第二个数据框:

m <- data.frame(i = c("42,57", "6", "3,6"))

现在我想过滤 r 这样,

  1. r$r == m$c 所有值都完全匹配,其中 r 的结果元组将是 ("100,111,123"; "42,57)

  2. r$r ~ m$c 其中一个元素(两边除以 "," 的元素足以保留行,其中 r 的结果元组将是 ("100"; "3"), ("100,111"; "3,6,7") 和 ("100,111,123"; "42,57")

任何帮助将不胜感激。提前致谢!

标签: rdataframe

解决方案


一个选项:

r[r$r %in% m$i,]

#             d     r
# 3 100,111,123 42,57

r[sapply(seq_along(r$r), function(x) any(unlist(strsplit(as.character(r$r[x]), ',')) %in% unlist(strsplit(as.character(m$i), ',')))),]

#             d     r
# 1         100     3
# 2     100,111 3,6,7
# 3 100,111,123 42,57

推荐阅读