NA值(按唯一ID)

Raf*_*íaz 3 r data.table

我有两列的数据框。我希望“ id”列是唯一的,并且非重复id的值应设置为相同的值,对于重复id的值应为NA。

library(data.table)

DT <- data.table(id = c(1,2,3,3,4,5,5), value = c(17,13,8,NA,9,NA,11))
DT
   id value
1:  1    17
2:  2    13
3:  3     8
4:  3    NA
5:  4     9
6:  5    NA
7:  5    11
Run Code Online (Sandbox Code Playgroud)

预期产量

   id value
1:  1    17
2:  2    13
3:  3    NA
4:  4     9
5:  5    NA
Run Code Online (Sandbox Code Playgroud)

mt1*_*022 6

这是一个选择:

> DT[, .(value = if(.N == 1) value else NA_real_), by = .(id)]
   id value
1:  1    17
2:  2    13
3:  3    NA
4:  4     9
5:  5    NA
Run Code Online (Sandbox Code Playgroud)