gpt4 book ai didi

r - 在 R data.table 中保留多列的第一行

转载 作者:行者123 更新时间:2023-12-04 16:27:15 25 4
gpt4 key购买 nike

我只想从 data.table 中获取第一行,按多列分组。

这对于单列很简单,例如:

(dt <- data.table(x = c(1, 1, 1, 2),
y = c(1, 1, 2, 2),
z = c(1, 2, 1, 2)))
# x y z
# |1: 1 1 1
# |2: 1 1 2
# |3: 1 2 1
# |4: 2 2 2
dt[!duplicated(x)] # Remove rows 2-3
# x y z
# |1: 1 1 1
# |2: 2 2 2

但是当尝试基于两列删除时,这些方法都不起作用;即在这种情况下只删除第 2 行:
dt[!duplicated(x, y)] # Keeps only original data set
# x y z
# |1: 1 1 1
# |2: 1 1 2
# |3: 1 2 1
# |4: 2 2 2
dt[!duplicated(list(x, y))] # Same as above
dt[!duplicated(c("x", "y"))] # Same as above
dt[!duplicated(list("x", "y"))] # Same as above
dt[!duplicated(c(x, y))] # Only removes duplicates from first column
# x y z
# |1: 1 1 1
# |2: 2 2 2

除此之外,它仅适用于某些情况:
dt[!duplicated(paste0(x, y))]
# x y z
# |1: 1 1 1
# |2: 1 2 1
# |3: 2 2 2

最佳答案

data.tableunique 提供 S3 方法, duplicatedanyDuplicated

unique(dt, by = c('x','y'))

会给你你想要的。

关于r - 在 R data.table 中保留多列的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24902737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com