r - 基于列中的多个值进行过滤
问题描述
我在根据列中的多个值过滤数据框时遇到一些问题。
我有两个看起来像这样的数据框:
第一个数据框:
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 这样,
r$r == m$c 所有值都完全匹配,其中 r 的结果元组将是 ("100,111,123"; "42,57)
r$r ~ m$c 其中一个元素(两边除以 "," 的元素足以保留行,其中 r 的结果元组将是 ("100"; "3"), ("100,111"; "3,6,7") 和 ("100,111,123"; "42,57")
任何帮助将不胜感激。提前致谢!
解决方案
一个选项:
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
推荐阅读
- c# - 静态方法的 MVVM 绑定
- php - 使用 json_decode 时不断获取 Undefiend Index
- gremlin - 如果边缘属性已经存在,如何更新它?
- import - 错误:尝试将不支持的媒体类型作为模块导入
- excel - 之后如何将检查按钮(真/假)与切换列表链接
- c# - 我的一个应用程序 DLL 在我的 InstallShield MSI 安装程序中被视为程序集
- r - 在 R 中将多个图连接在一起
- c++ - 为什么 C++23 std::move_only_function 没有推导指南?
- c++ - C++ 需要将 BYTE * 数据从我的网络摄像头转换为 ID2D1Image * 用于 ID2D1Effect::SetInput 方法以获得交叉淡入淡出效果
- c - Add floating point numbers 23.54 and 33.22 with just integral value like 23+33