有几种不同的方法可以做到这一点。
library(data.table)
dt = data.table("Group" = c(rep("A",4),rep("B",4)), "value" = rep(1:4, each = 2))
knitr::kable(dt)
> dt
Group value
1: A 1
2: A 1
3: A 2
4: A 2
5: B 3
6: B 3
7: B 4
8: B 4
我们可以删除所有行中的重复项
knitr::kable(dt[!duplicated(dt),])
|Group | value|
|:-----|-----:|
|A | 1|
|A | 2|
|B | 3|
|B | 4|
或者,我们可以根据特定的行删除重复项
knitr::kable(unique(dt,by = c("Group")))
|Group | value|
|:-----|-----:|
|A | 1|
|B | 3|
然后,由于它可以匹配多个选项,我们可以指定我们要抓取的选项
knitr::kable(dt[unique(dt,by = c("Group")),.(Group, value), mult = "first"])
|Group | value|
|:-----|-----:|
|A | 1|
|B | 3|
knitr::kable(dt[unique(dt,by = c("Group")),.(Group, value), mult = "last"])
|Group | value|
|:-----|-----:|
|A | 2|
|B | 4|
编辑
不打印特定组中已重复的值
dt$Group = ifelse(duplicated(dt$Group),"",dt$Group)
knitr::kable(dt)
|Group | value|
|:-----|-----:|
|A | 1|
| | 1|
| | 2|
| | 2|
|B | 3|
| | 3|
| | 4|
| | 4|