gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:19:24 25 4
gpt4 key购买 nike

这可能是非常基本的问题。我想在现有的 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多个变量,因此无法一一创建单独的变量。

最佳答案

:=将在添加新列时更改当前对象,就像通过引用一样。如果我们想要一个新对象,使用 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"

关于r - 在 R 中的数据表中创建新变量并保存在新对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68596921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com