dplyr过滤器仅获取组之一采用的值

时间:2019-06-20 08:43:54

标签: r dplyr

我想filter从任意小组中获取行,其中一个变量与其中一组所取的值相匹配。

structure(list(type = c("A", "A", "A", "A", "B", "B", "B", "B", 
"B"), categ = c("apple", "pear", "apple", "banana", "pear", "kiwi", 
"apple", "banana", "mango")), .Names = c("type", "categ"), row.names = c(NA, 
-9L), class = c("tbl_df", "tbl", "data.frame"))

#  type  categ 
#  <chr> <chr> 
#  A     apple 
#  A     pear  
#  A     apple 
#  A     banana
#  B     pear  
#  B     kiwi  
#  B     apple 
#  B     banana
#  B     mango 

我想从categcateg的A组中type所取值之一的任何组中得到的行

基本上我想这样做:

df %>% 
  filter(categ %in% pull(filter(df, type == 'A'), categ))


#  type  categ 
#  <chr> <chr> 
#  A     apple 
#  A     pear  
#  A     apple 
#  A     banana
#  B     pear  
#  B     apple 
#  B     banana

这是一个丑陋的方法,我很确定还有更好的方法,但是我找不到它。

感谢您的帮助,对英语不好表示抱歉。

2 个答案:

答案 0 :(得分:3)

一种可能是:

test_dict["pins"].append({
    ** {k: pin.attrib[k] for k in ['type', 'unit'] if k in pin.attrib},
    "name": pin.text
})

答案 1 :(得分:1)

我们也可以使用slice

library(dplyr)
df %>% 
  slice(match(categ, categ[type == "A"]))
# A tibble: 7 x 2
#  type  categ 
#  <chr> <chr> 
#1 A     apple 
#2 A     pear  
#3 A     apple 
#4 A     banana
#5 A     pear  
#6 A     apple 
#7 A     banana