【问题标题】:Rename aggregated columns using data.table in R使用 R 中的 data.table 重命名聚合列
【发布时间】:2016-06-06 07:36:32
【问题描述】:

我有一个表 dtTrain 有很多列。我正在尝试对每个 [Min, Max, sd, mean] 执行 4 个聚合列。 为此,我正在运行这条线

subTrain <- dtTrain[,c(min = lapply(.SD, min), 
                       max = lapply(.SD, max), 
                       sd = lapply(.SD, sd), 
                       mean = lapply(.SD, mean)), by=TrialID]

我遇到的问题是聚合正在工作,但列标题重复(即 column1 在 subTrain 表中产生了四次)。 我更喜欢[column1.min,...,column1.max...,column1.sd, ...column1.mean,...] 或者实际上是任何列标签。

【问题讨论】:

标签: r data.table


【解决方案1】:

我们可以使用setnamesrep 来更改列名

res <- dtTrain[, c(lapply(.SD, min), 
        lapply(.SD, max),
        lapply(.SD, sd), 
       lapply(.SD, mean)), by=TrialID]
nm1 <- setdiff(names(dtTrain), 'TrialID')
setnames(res, 2:ncol(res), paste(nm1, rep(c('min', 'max', 'sd', 'mean'), 
                         each = length(nm1)), sep="."))  

【讨论】:

  • res1
  • 请问,akrun 或@wbm 可以更正最终答案吗?谢谢。
  • 是的,正确的。我认为 R 中的一切都是零基础,但有点新手。非常感谢@akrun
【解决方案2】:

可以使用names() 函数或colnames() 函数来更改列名

 > names(Result_dataframe) <- c("Min","Max","sd","Mean")

 #                         OR

 > colnames(Result_dataframe) <- c("Min","Max","sd","Mean")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2014-04-28
    相关资源
    最近更新 更多