根据R中不同列的值之和过滤行组

时间:2016-09-26 17:18:25

标签: r dplyr

我正在尝试过滤掉R中的整行,但前提是特定集合的频率加起来不超过5.

我看到的数据有点像这样。这是我目前称之为“单词”的数据框:

HEADWORD VARIANT FREQUENCY
 SWORD    sword      2
 SWORD    swerd      1
 SWORD    sworde     1
 KNIGHT   knight     6
 KNIGHT   kniht      2
 KNIGHT   knyt       1

我只想要特定词条中的频率加起来超过5的行。所以在这里,我想保留KNIGHT的所有实例,但我想完全摆脱所有的SWORD行。

我尝试在dplyr上执行此操作,但没有成功。这是我试过的代码:

Words1 %>% group_by(HW) %>%  filter(Fr > 5)

我不知道如何做到这一点,我真的很感激任何帮助!

2 个答案:

答案 0 :(得分:6)

我们需要得到'{1}}'FREQUENCY',并在'HEADWORD'分组后检查sum中是否大于5

filter

答案 1 :(得分:2)

您可以使用base R ave功能

df[ave(df$FREQUENCY, df$HEADWORD, FUN = sum) > 5, ]

#   HEADWORD VARIANT FREQUENCY
#4   KNIGHT  knight         6
#5   KNIGHT   kniht         2
#6   KNIGHT    knyt         1