【发布时间】:2016-02-26 22:31:00
【问题描述】:
我有一个大的data.frame 这个示例结构:
df <- data.frame(id = rep(c("a","b","c"),4), sex = rep(c("M","F"),6), score = 1:12)
我想通过id 列有效地聚合它并用逗号分隔粘贴唯一的sex 值并保持最大score 值。
如何修改这个data.table 函数来实现:
setDT(df)[, lapply(.SD, function(x) paste(unique(x), collapse = ",")), by = list(id)]
【问题讨论】:
-
df[, .(unique_sex = toString(unique(sex)), score_max = max(score)), by = id]? -
为什么在这里使用 od .SD?在您的真实数据中,您还有其他列吗?
-
@user1701545,如果这回答了您的问题,请随时自行发布答案。 agstudy 的问题很有道理
-
agstudy,我正在使用 SD,因为我知道这比 dplyr 选项更有效。除此之外没有什么特别的原因。你有比 SD 更好的解决方案吗?
-
为什么要以
data.frame开头?就做DT <- data.table(...)
标签: r dataframe data.table aggregate