r - 将字母添加到 data.table R 中的 setnames

标签 r data.table

以保留原始名称但前面(或后面)一个或几个其他字母的方式更改 data.table 的列名的最简单方法是什么。
例如。我正在运行以下代码

tmp <- DT[, lapply(.SD, mean, na.rm=T), by = .(NACE2), .SDcols=cols]
tmp1 <- DT[, lapply(.SD, sum, na.rm=T), by = .(NACE2), .SDcols=cols]
sna <- function(x) { sum(!is.na(x))}
tmp2 <- DT[, lapply(.SD, sna), by = .(NACE2), .SDcols=cols]

这导致多个 data.tables 都具有由 DT 中的原始名称确定的相同名称。 ,它通过 .SDcols 有 65 个选定的列
我想在合并之前更改列名 tmp, tmp1, tmp2以这样的方式在一起,即名称分别前面
  • m_ 为 tmp
  • s_ 为 tmp1
  • na_ for tmp2

  • 有没有办法直接在 lapply 中做到这一点?函数或比避免通过 setnames(tmp, ...) 重新键入 65 个名称更好的方法?
    我知道可以创建一个列名向量,然后将该向量与另一个向量组合,例如“m_”但必须有更明智的方式。

    最佳答案

    我们可以使用 pastesetnames更改列名称

    setnames(tmp, paste0("m_", names(tmp)))
    

    同样
    setnames(tmp1, paste0("s_", names(tmp1)))
    setnames(tmp2, paste0("na_", names(tmp2)))
    

    关于r - 将字母添加到 data.table R 中的 setnames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40734462/

    相关文章:

    regex - 按模式引用 data.table 列

    r - R 中的 data.table 是否有更新版本或替代版本?

    r - 如何使用 R 测试 data.table 中的多个列的特定值

    r - 更新 data.table 中列子集的类

    r - R中的Boruta箱形图

    r - flextable:嵌入 ggpplots 使用来自 2 列的数据和列表(用于比较)作为每行的单个图

    r - lmer 输出的解释

    c++ - 'builtin' [Rcpp] 中未实现的类型 'coerceToReal'

    graphics - 如何使用 R 创建一个 "inkblot"图表?

    r - 在 data.table 中创建新列时如何引用整行?