创建新变量并保存在r数据表中的新对象中



这可能是一个非常基本的问题。我想在现有数据中创建一个新变量。表对象,并希望以不同的名称保存新对象。然而,我正面临一个问题:

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多个变量,所以我不能逐个创建单独的变量。

:=将改变当前对象,同时添加一个新列,因为它通过引用。如果我们想要一个新对象,使用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"

最新更新