r - 如何过滤具有多列条件的数据框
问题描述
尝试评论中的代码后更新!!!结果显示了所有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的项目......但似乎这个问题应该只有一个答案。
所以你能帮帮我吗!
谢谢!
解决方案
使用此代码,您可以获得每个品牌的最大值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
推荐阅读
- angular-ngselect - ng-select-ng-select 没有导出成员 'NG_SELECT_DEFAULT_CONFIG'
- django - 在没有 OAuth2 的情况下登录 Chrome 扩展程序
- python - 为什么这些变量会被套接字模块重置?
- javascript - 窗口调整大小上的jQuery滚动条不起作用
- php - 未定义索引:路径,在 laravel 5.8 中添加新的自定义服务提供者时
- java - 对于以下描述的要求,从性能的角度来看,根据业务逻辑迭代列表的最佳方法是什么
- time - 如何转换此日期格式
- firebase - Firestore onSnapshot 是否仅对更改收费?
- linux - 如何将一个 shell 的 pid 传递给在父 shell 中创建的另一个 shell,并检查父进程是否正在运行或被终止?
- python - Python将csv文件转换为Json问题