我正在尝试使用data.table按组(a,b,c)将重复值空白。我在下面尝试过,但仅适用于变量。我当时在考虑使用tail()或head(),但那没有用。
df$E[duplicated(df$E)] <- ""
输入表
a,b,c
=====
1,1,1
1,1,2
1,2,1
1,2,2
1,3,1
1,3,2
2,1,1
2,1,2
2,2,1
2,2,2
2,3,1
2,3,2
输出表
a,b,c
=====
1,1,1
, ,2
,2,1
, ,2
,3,1
, ,2
2,1,1
, ,2
,2,1
, ,2
,3,1
, ,2
library(data.table)
df <- tibble::tribble(
~a,~b,~c,
1,1,1,
1,1,2,
1,2,1,
1,2,2,
1,3,1,
1,3,2,
2,1,1,
2,1,2,
2,2,1,
2,2,2,
2,3,1,
2,3,2
) %>% as.data.table()
df[,dupa:=rleid(a)][,rowid :=seq_len(.N) ,by=dupa][,a:=ifelse(rowid>1,NA,a)][,c("dupa","rowid"):=.(NULL,NULL)]
df[,dupb:=rleid(b)][,rowid :=seq_len(.N) ,by=dupb][,b:=ifelse(rowid>1,NA,b)][,c("dupb","rowid"):=.(NULL,NULL)]
df[,dupc:=rleid(c)][,rowid :=seq_len(.N) ,by=dupc][,b:=ifelse(rowid>1,NA,c)][,c("dupc","rowid"):=.(NULL,NULL)]
df
a b c
1: 1 1 1
2: NA NA 2
3: NA 2 1
4: NA NA 2
5: NA 3 1
6: NA NA 2
7: 2 1 1
8: NA NA 2
9: NA 2 1
10: NA NA 2
11: NA 3 1
12: NA NA 2