小编SJD*_*JDS的帖子

将字母添加到 data.table R 中的集合名称

更改 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,名称前面分别为

  1. m_ 为tmp
  2. s_ 为tmp1
  3. 娜_为tmp2

有没有办法直接在lapply函数中执行此操作,或者有比避免通过 重新输入 65 个名称更好的方法setnames(tmp, ...)?我知道可以创建一个 colname 向量,然后将该向量与另一个由“m_”组成的向量组合起来,但必须有一种更明智的方法。

r data.table

5
推荐指数
1
解决办法
632
查看次数

跨多个列应用函数

请在这里找到我正在使用的长数据的一小部分

dput(dt)
structure(list(id = 1:15, pnum = c(4298390L, 4298390L, 4298390L, 
    4298558L, 4298558L, 4298559L, 4298559L, 4299026L, 4299026L, 4299026L, 
    4299026L, 4300436L, 4300436L, 4303566L, 4303566L), invid = c(15L, 
    101L, 102L, 103L, 104L, 103L, 104L, 106L, 107L, 108L, 109L, 87L, 
    111L, 2L, 60L), fid = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 
    4L, 4L, 4L, 4L, 3L, 3L, 2L, 2L), .Label = c("CORN", "DowCor", 
    "KIM", "Texas"), class = "factor"), dom_kn = c(1L, 0L, 0L, 0L, 
    1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, …
Run Code Online (Sandbox Code Playgroud)

r data.table

1
推荐指数
1
解决办法
773
查看次数

标签 统计

data.table ×2

r ×2