作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有数据
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 指出的那样,我们如何保持类(class)。尽管@chinsoon12 的解决方案确实有效,但使用以下 data.table 的一些解决方案不起作用:
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"))
最佳答案
另一种选择:
dtmode <- function(x) x[which.max(rowid(x))]
test[, .(A=unique(A), B=dtmode(B), C=dtmode(C))]
数据:
test = data.table(
A = c(1,1,3,4,5,6),
B = c("a", "be", "a", "c", "d", "c"),
C = rep(1, 6)
)
关于r - 使用最普遍的列值交换 data.table 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60228938/
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我是一名优秀的程序员,十分优秀!