在R语言中如何按阈值筛选数据?解决频率小于30的行过滤失效问题
错误原因
你写的代码逻辑和实际需求完全不匹配:
group_by(freq)的作用是把数据集里freq取值相同的行合并为同一个分组filter(n() < 30)中的n()是dplyr的分组计数函数,返回的是当前分组的总共有多少行,根本不是行本身的freq字段数值。你给出的示例数据里,所有freq对应的分组行数最多只有3(对应freq=2的分组),远小于30,所以所有行都符合过滤条件被保留,输出自然和原数据集完全一致。
正确写法
你不需要做分组操作,直接针对行的freq字段做过滤即可,代码如下:
dd %>% filter(freq >= 30)
运行上述代码后,就会筛选出所有freq大于等于30的行,你给出的示例数据运行后输出结果为:
| country | freq |
|---|---|
| Brazil | 46 |
| Canada | 37 |
内容的提问来源于stack exchange,提问作者Cloudmugu
相关产品推荐
相关产品推荐

