【问题标题】:Creating new variable and save in new object in data table in R在R中的数据表中创建新变量并保存在新对象中
【发布时间】:2021-10-06 08:25:05
【问题描述】:

这可能是一个非常初级的问题。我想在现有的 data.table 对象中创建一个新变量,并想用不同的名称保存新对象。但是,我面临一个问题:

library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)

a <- colnames(DT)[-1] #variables to be modified
a.va <- paste(a, "x", sep = "_") #new variables name

DT2 <- DT[, (a.va) := lapply(.SD, FUN = function(x) (sum(x, na.rm = T)-x) / (.N - 1)), .SDcols = a, by = x]

但是,它同时更改了两个现有对象DT。我想保持原始对象DT 完好无损。在我原来的数据集中,有100多个变量,所以不能一一单独创建变量。

【问题讨论】:

    标签: r data.table data-cleaning


    【解决方案1】:

    := 将更改当前对象,同时添加一个新列,就像它通过引用所做的那样。如果我们想要一个新对象,使用copy从'DT'创建一个新对象,然后在复制的对象上分配:=

    DT2 <- copy(DT)
    DT2[, (a.va) := lapply(.SD, FUN = function(x) (sum(x, na.rm = T)-x) / (.N - 1)), .SDcols = a, by = x]
    

    -检查

    > names(DT2)
    [1] "x"   "y"   "v"   "y_x" "v_x"
    > names(DT)
    [1] "x" "y" "v"
    

    【讨论】:

      猜你喜欢
      • 2020-07-21
      • 2016-09-15
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      相关资源
      最近更新 更多