基于不同列的值之和,筛选行组

4
我会尝试在R中过滤整行,但仅当特定集合的频率不超过5时进行过滤。
我有的数据看起来像这样。它是一个名为“Words”的数据框:
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个回答

9
我们需要在按'HEADWORD'分组后,在filter中获取'FREQUENCY'的sum并检查其是否大于5。
Words1 %>% 
     group_by(HEADWORD) %>% 
     filter(sum(FREQUENCY) >5)   
#   HEADWORD VARIANT FREQUENCY
#     <chr>   <chr>     <int>
#1   KNIGHT  knight         6
#2   KNIGHT   kniht         2 
#3   KNIGHT    knyt         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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接