使用R中的data.table重命名聚合列

时间:2016-06-06 07:36:33

标签: r data.table

我有一个表dtTrain,它有很多列。我试图在每个上执行4个聚合列,[Min,Max,sd,mean]。 为此,我正在运行

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,...]或实际上任何列标签。

2 个答案:

答案 0 :(得分: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="."))  

答案 1 :(得分:0)

可以使用names()函数或colnames()函数

来更改列名
 > names(Result_dataframe) <- c("Min","Max","sd","Mean")

 #                         OR

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