r-如何将列中的unigue值从data.table子集设置为新data.table



我有一个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)]

最新更新