使用带有向量的dplyr的子集数据帧

使用带有向量的dplyr的子集数据帧,r,dplyr,R,Dplyr,我知道如何使用dplyr,但在这里我被卡住了 我有一个向量,比如: v <- c("A","B","C") 我只想保留包含所有字母的组 然后在这个例子中只保留G1,因为v中的所有A,B和C都存在 我试过: filtred_df2=filtred_df %>% group_by(Groups) %>% filter(all(letters %in% v)) 可能有一个较短的方法,但这应该有效。首先,我们将数据限制为V中的行,然后计算该组有多少个字母,并将其与V中唯一字

我知道如何使用dplyr,但在这里我被卡住了

我有一个向量,比如:

v <- c("A","B","C")
我只想保留包含所有字母的组

然后在这个例子中只保留G1,因为v中的所有A,B和C都存在

我试过:

filtred_df2=filtred_df %>%
  group_by(Groups) %>%
  filter(all(letters %in% v))

可能有一个较短的方法,但这应该有效。首先,我们将数据限制为V中的行,然后计算该组有多少个字母,并将其与V中唯一字母的数量进行比较。最后连接到原始数据,以仅包括包含所有字母的组

filtred_df %>%
  filter(letters %in% v) %>%  # Only care about letters that are in V
  count(Groups, letters) %>%   # or distinct(Groups, letters) %>%
  count(Groups) %>%
  filter(n == length(unique(v))) %>%
  select(-n) %>%
  left_join(filtred_df)

@嗯,不,我仍然得到相同的数据框架啊,对不起,误解了你的问题。它不应该是v%吗?至少这让“G1”保持了setequal的另一个用例-dat%>%groups\u byGroups%>%filtersetequalleters,v是的,它可以工作我把v放在第一位谢谢你抽出时间:
filtred_df %>%
  filter(letters %in% v) %>%  # Only care about letters that are in V
  count(Groups, letters) %>%   # or distinct(Groups, letters) %>%
  count(Groups) %>%
  filter(n == length(unique(v))) %>%
  select(-n) %>%
  left_join(filtred_df)