我有一个data.table,我想对它进行子集化,并基于Counter变量创建另一个data_table。
伪代码是从旧数据表创建一个只有唯一Subject
的新数据表,其中Counter
=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
,其中match
返回匹配的第一行的索引,并使用该索引对进行子集设置
old_data[match(5, Counter)]