首页 > 解决方案 > 如何将列中的唯一值从 data.table 子集到新的 data.table

问题描述

我有一个 data.table,我想根据 Counter 变量对其进行子集化并创建另一个 data.table。

伪代码将创建一个新的 data.table,它仅从Subject旧 data.table 中唯一,其中Counteris = 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          |   
+---------------+------------+--------------+

标签: rdata.table

解决方案


我们可以换unique行以获得第一行by“主题”

library(data.table)
unique(old_data[Counter == 5, ], by = c('Subject'))

或者另一个选项是matchwherematch返回匹配的第一行的索引并将其用于子集

old_data[match(5, Counter)]

推荐阅读