R语言如何根据指定参考值提取数据框配对组的所有关联数据
解决方案
核心逻辑很简单:先定位到目标值对应的所有pair_num分组编号,再把这些编号对应的所有行全部保留即可,不需要提前知道同组其他配对值是什么。
dplyr 写法(适配你用的管道操作习惯)
library(dplyr) # 筛选所有和"apple"同配对组的行 res <- df1 %>% filter(pair_num %in% pair_num[values == "apple"])
运行后得到的结果和你给出的预期输出完全一致:所有pair_num为1、2、3的行都会被保留,也就是apple和它对应的pb、ranch、sauce全部被提取出来,不包含apple的4、5组会被过滤掉。哪怕同一个配对组里目标值多次出现,这个写法也能正常运行,不会重复筛行。
如果需要筛选其他值的关联配对,只需要把代码里的"apple"替换成你要指定的单个目标值即可。
base R 写法(无需加载第三方包)
# 提取目标值对应的所有配对组编号 target_pair_id <- df1$pair_num[df1$values == "apple"] # 按组号筛选所有匹配行 res <- df1[df1$pair_num %in% target_pair_id, ]
两种写法底层逻辑完全一致,运行结果没有区别。
内容的提问来源于stack exchange,提问作者Munrock
相关产品推荐
相关产品推荐

