r - 如何将列中的唯一值从 data.table 子集到新的 data.table
问题描述
我有一个 data.table,我想根据 Counter 变量对其进行子集化并创建另一个 data.table。
伪代码将创建一个新的 data.table,它仅从Subject
旧 data.table 中唯一,其中Counter
is = 5
new_data <- old_data[Counter == 5, ]
但这会在每次计数器达到 5 时给我吗,我需要它只在第一次给我
Old data.table:
+---------------+------------+--------------+
| Date | Subject | Counter |
+---------------+------------+--------------+
| 10-21-20 | a | 0 |
+---------------+------------+--------------+
| 10-22-20 | a | 1 |
+---------------+------------+--------------+
| 10-23-20 | a | 2 |
+---------------+------------+--------------+
| 10-21-20 | b | 0 |
+---------------+------------+--------------+
| 10-26-20 | b | 5 |
+---------------+------------+--------------+
| 11-2-20 | b | 5 |
+---------------+------------+--------------+
| 11-7-20 | b | 5 |
+---------------+------------+--------------+
New data.table
+---------------+------------+--------------+
| 10-26-20 | b | 5 |
+---------------+------------+--------------+
解决方案
我们可以换unique
行以获得第一行by
“主题”
library(data.table)
unique(old_data[Counter == 5, ], by = c('Subject'))
或者另一个选项是match
wherematch
返回匹配的第一行的索引并将其用于子集
old_data[match(5, Counter)]
推荐阅读
- swift - 将字符串中的所有“char”替换为“charchar”
- ios - Expo build:ios 尝试确保 Apple Developer Portal 上存在 App ID 时出现问题
- python - 通过 xmlrpc 库连接 Odoo 12 错误
- azure - 访问 azure AD 上的级别以进行应用程序注册
- google-rich-snippets - 丰富网页摘要(评论)未在 Google 中显示
- vue.js - 重新执行过滤器/方法
- vue.js - Vue:从导入更新数据()中的值
- asp.net - 使用 context.RunClaimsAction(user) 在 asp.net 中实现 OAuth 错误
- html - 如何下载HTML元素,检查后显示,但显示整个页面源后不显示?
- angular - 将 ag-grid 从共享模块导出到延迟加载模块给出错误