r - 我如何删除R中值频率超过x的行
问题描述
假设我有一个数据集:
x y
1 a
1 a
1 a
1 a
2 a
2 a
2 b
3 c
3 e
如何删除 x 频率重复超过 3 的行(例如出现 4 次的“1”)?
解决方案
碱基R
dat[ave(dat$x, dat$x, FUN=length) < 4,]
# x y
# 5 2 a
# 6 2 a
# 7 2 b
# 8 3 c
# 9 3 e
dplyr
library(dplyr)
dat %>%
group_by(x) %>%
filter(n() < 4) %>%
ungroup()
# # A tibble: 5 x 2
# x y
# <int> <chr>
# 1 2 a
# 2 2 a
# 3 2 b
# 4 3 c
# 5 3 e
数据表
library(data.table)
as.data.table(dat)[, .SD[.N < 4,], by = .(x)][]
# x y
# <int> <char>
# 1: 2 a
# 2: 2 a
# 3: 2 b
# 4: 3 c
# 5: 3 e
推荐阅读
- algorithm - 数组元素之和(任意顺序)等于 k 非连续元素
- node.js - axios 相当于 http 请求?
- linux - 退出/杀死/注销 linux 会话的最干净方法是什么?
- mongodb - Mongo DB Atlas 快照丢失
- javascript - 在没有 jQuery 的情况下调用 Bootstrap4 可折叠
- android - Kivy garden mapview 使用 Buildozer 部署错误
- mongodb - 如何获取 MongoDB 连接字符串?
- android - 如何在 gradle 6.0+ 上将类/枚举添加到设置 gradle 脚本?
- c# - 为什么相同的静态方法在不同的控制器中表现不同?
- html - Flickr 链接在 HTML 页面上不起作用