r - 使用 data.table 过滤和分组
问题描述
我有以下数据表:
DT <- data.table(name = c('ana', 'ana', 'ana', 'ana', 'justin', 'justin', 'justin', 'justin'), age = c(12, 26, 24, 14, 28, 36, 17, 8))
我希望能够按姓名分组、按年龄排序并删除第二高年龄低于 28 岁的所有组。如何使用 data.table 做到这一点?
预期的输出应该是:
data.table(name = c('justin', 'justin', 'justin', 'justin'), age = c(28, 36, 17, 8))
由于它将删除“ana”组,因为该组中第二高的年龄小于 28 岁。
解决方案
一个快速简洁的选项(也可以重新排序数据)
setkey(DT, name, age)
DT[, .SD[age[.N-1] >= 28], by = name]
name age
1: justin 8
2: justin 17
3: justin 28
4: justin 36
推荐阅读
- reactjs - React js - 我希望自动完成应该使用 primaryText 和 SecondaryText 搜索值
- java - Spring Boot MSSQL Kerberos 身份验证
- java - java中方法隐藏概念中“隐藏”一词的含义是什么?
- c# - Unity-C# 实例化不起作用
- arrays - 在 Swift 中将实例变量的属性保存到 Struct 的静态变量数组中
- outlook - 如何在 Outlook 中获取标准帐户
- react-native - 当数据源来自json数组时反应本机选择器给出错误
- go - 使用 kubernetes 从不同的服务连接到 Redis 服务
- ios - 如何使用 Swift 将 imageview 中的图像上传到 POST API?
- c++ - 为什么这段代码的输出总是一样的?