【问题标题】:Naming resulting data.table columns after aggregation in R在 R 中聚合后命名结果 data.table 列
【发布时间】:2017-03-06 02:25:30
【问题描述】:

我想使用返回多行的函数在 data.table 中进行聚合,例如 summary()quantile()。到目前为止我的做法是这样的:

library(data.table)
x = as.data.table(iris)
x[, as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species]

这可行,但会产生任意列名。如果我有一个长度为 12 的向量 myColumnNames,我如何设置新列以该向量命名(不使用下一行中的 setnames)?

我的“明显”尝试,x[, myColumnNames = as.list(c(summary(Sepal.Length), summary(Sepal.Width))), by = Species] 失败了。有什么想法吗?

【问题讨论】:

  • x[, setNames(as.list(c(summary(Sepal.Length), summary(Sepal.Width))), myColumnNames), by = Species]怎么样
  • @akrun 所说的内容,或者您​​可以使用data.table::setnames 设置名称。例如setnames(y,2:13,myColumnNames),其中y 是您的行的结果。
  • @akrun 您的解决方案完美运行,谢谢!请张贴它,这样我就可以接受它作为正确的答案。 @nicola 我想在命令之后避免setnames(),以避免使用像2:13这样的索引

标签: r data.table aggregate


【解决方案1】:

一个选项是setNames

x[, setNames(as.list(c(summary(Sepal.Length), 
        summary(Sepal.Width))), myColumnNames), by = Species]

【讨论】:

  • 像魅力一样工作!您是否暗示还有更多选择?
  • @GerasimosPanagiotakopoulos 第二个选项是@nicola 评论的setnames
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
相关资源
最近更新 更多