更改 data.table 的 colname 的最简单方法是什么,即保留原始名称,但前面(或后面)有一个或几个其他字母。例如我正在运行以下代码
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]
Run Code Online (Sandbox Code Playgroud)
这会产生多个 data.tables,它们都具有由 中的原始名称确定的相同名称DT,其中有 65 个选定的列,通过.SDcols
我想在合并之前更改列名tmp, tmp1, tmp2,名称前面分别为
tmptmp1tmp2有没有办法直接在lapply函数中执行此操作,或者有比避免通过 重新输入 65 个名称更好的方法setnames(tmp, ...)?我知道可以创建一个 colname 向量,然后将该向量与另一个由“m_”组成的向量组合起来,但必须有一种更明智的方法。
我们可以使用pastewithsetnames来更改列名
setnames(tmp, paste0("m_", names(tmp)))
Run Code Online (Sandbox Code Playgroud)
和类似地
setnames(tmp1, paste0("s_", names(tmp1)))
setnames(tmp2, paste0("na_", names(tmp2)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |