首页 > 解决方案 > 如何过滤具有多列条件的数据框

问题描述

尝试评论中的代码后更新!!!结果显示了所有brand_id,review_score为5(最高分)。虽然也有超过 10 条评论的数千个品牌 ID...

因此我仍然对此感到困惑

问题是我得到了一个包含许多列的数据框,我需要为不同的列找到具有不同条件的品牌。

这是数据框:

品牌标识 品牌 评分
1 一个 1.0
2 2.0
2 3.0
3 C 1.0
3 C 1.5
3 C 2.0

我需要这个项目的品牌 id 是什么?并且还要过滤超过 10 条评论的这个项目?

我试过这样的代码:

item %>%  
  group_by(Brandid, review_score) %>%
  summarise(idnumber = n()) %>%
  filter(idnumber > 10)%>%
  arrange(desc(review_scode))

我试过这个,也失败了..

item %>%
  group_by(Brand_id) %>%
  mutate(n = n(), 'max' = max(review_overall, na.rm = TRUE))%>%
  filter(n >= 10) %>%
  arrange(desc('max'))

然后我得到了许多具有相同review_scode的项目......但似乎这个问题应该只有一个答案。

所以你能帮帮我吗!

谢谢!

标签: rdplyr

解决方案


使用此代码,您可以获得每个品牌的最大值review_score。使用add_count您可以获得每个品牌的计数。

没有专栏review_overall:也许你可以澄清一下:

library(dplyr)
df %>% 
    group_by(Brand_name) %>% 
    add_count() %>% 
    filter(review_score == max(review_score))

如果您也想过滤n,请使用以下代码:

df %>% 
    group_by(Brand_name) %>% 
    add_count() %>% 
    filter(review_score == max(review_score & n > 10))

输出:

  Brand_id Brand_name review_score     n
     <int> <chr>             <dbl> <int>
1        1 A                     1     1
2        2 B                     3     2
3        3 C                     2     3

推荐阅读