【发布时间】:2020-02-14 15:12:36
【问题描述】:
我有数据
test = data.table(
a = c(1,1,3,4,5,6),
b = c("a", "be", "a", "c", "d", "c"),
c = rep(1, 6)
)
我希望获取列 a 的唯一值,将其存储在另一个 data.table 中,然后用这些剩余列中最普遍的值填充剩余列,这样我的结果data.table 将是:
test2 = data.table(a = c(1,3,4,5,6), b = "a", c = 1)
be 列有相同数量的“a”和“c”,但在这些情况下选择哪个并不重要。
目前的尝试:
test2 = unique(test, by = "a")
test2[, c("b", "c") := lapply(.SD, FUN = function(x){test2[, .N, by = x][order(-N)][1,1]}), .SDcols = c("b", "c")]
编辑:我希望有一个通用的解决方案,它与我指定列为“唯一”的函数兼容,而其余列具有单个最普遍的值。因此我使用 lapply 和 .SD =)
EDIT2:正如@MichaelChirico 指出的那样,我们如何保持课程。使用以下 data.table 的一些解决方案不起作用,尽管@chinsoon12 的解决方案确实有效:
test = data.table(a = c(1,1,3,4,5,6),
b = c("a", "be", "a", "c", "d", "c"),
c = rep(1, 6),
d = as.Date("2019-01-01"))
【问题讨论】:
标签: r data.table