R 如何在data.table中按组增量创建新列?
对于每个data.table的组,我有不同的向量,如下面的R 如何在data.table中按组增量创建新列?,r,data.table,R,Data.table,对于每个data.table的组,我有不同的向量,如下面的new.column.for.*,我想在data.table的新列中使用它们。 是否有一种紧凑的data.table方法来实现这一点? 合并似乎相当麻烦。创建新向量(比如new.column.d我不明白DT$d有什么问题,我想在与new.column.for.b不同的时间点插入new.column.for.a。我不想为DT$d创建一个大的向量,因为它消耗内存。如果你的数据看起来真的像你的例子,那么唯一的“data.table ish”我能
new.column.for.*
,我想在data.table的新列中使用它们。
是否有一种紧凑的data.table
方法来实现这一点?
合并似乎相当麻烦。创建新向量(比如
new.column.d我不明白DT$d有什么问题,我想在与new.column.for.b
不同的时间点插入new.column.for.a
。我不想为DT$d
创建一个大的向量,因为它消耗内存。如果你的数据看起来真的像你的例子,那么唯一的“data.table ish”我能想到的改进是,在事实之后添加列到预先存在的表中,可以预先分配列(类似于DT[,d:=NA\u character\uz]
),然后插入您想要插入的任何内容,例如DT[1:4,d:='a'][11:17,d:='b']
。(事实上,您可以跳过预分配步骤,因为仅在某些行上定义列也会在其他行中填充相同类型的NA
,但我显示了该步骤,因为它有时很有用。)这就是您的意思吗?如果不是,您能否提供一点更详细的信息…@Philip也许我们已经接近了。能否'a'
在DT[1:4,d:='a']
是否在DT
之外?如果类似DT[key.1=='a',d]是,但不使用
library(data.table)
DT <- data.table(key.1 = rep(c('a','b','c'), each = 10),
key.2 = rep(1:10, 3) ,
c = 1:30)
new.column.for.a <- c(paste0('a', 1:4), rep(NA, 6))
new.column.for.b <- c(paste0('b', 1:7), rep(NA, 3))
Desired.T <- data.table(key.1 = rep(c('a','b','c'), each = 10),
key.2 = rep(1:10, 3) ,
c = 1:30,
d = c(new.column.for.a,
new.column.for.b, rep(NA, 10))
)