gpt4 book ai didi

按列值复制 data.table 中的行

转载 作者:行者123 更新时间:2023-12-02 07:31:10 25 4
gpt4 key购买 nike

我有一个结构如下的数据集:

data <- data.table(ID=1:10,Tenure=c(2,3,4,2,1,1,3,4,5,2),Var=rnorm(10))

    ID Tenure         Var
1: 1 2 -0.72892371
2: 2 3 -1.73534591
3: 3 4 0.47007030
4: 4 2 1.33173044
5: 5 1 -0.07900914
6: 6 1 0.63493316
7: 7 3 -0.62710577
8: 8 4 -1.69238758
9: 9 5 -0.85709328
10: 10 2 0.10716830

我需要复制每一行 N= Tenure次。例如我需要将第一行复制两次(从 Tenure = 2 开始。

我需要转换后的数据集如下所示:

setkey(data,ID)
print(data[,.(ID=rep(ID,Tenure))][data][, Indx := 1:.N, by=ID])

ID Tenure Var Indx
1: 1 2 -0.7289237 1
2: 1 2 -0.7289237 2
3: 2 3 -1.7353459 1
4: 2 3 -1.7353459 2
5: 2 3 -1.7353459 3
6: 3 4 0.4700703 1
...
...

是否有更有效的方法(更data.table方法)来做到这一点?我的路走得很慢。我在想应该有一种方法可以使用 by-without-by 来做到这一点合并usng .EACHI

最佳答案

我认为使用键/合并在这里没有帮助。只需通过传递行索引向量来扩展:

DT <- data[rep(1:.N,Tenure)][,Indx:=1:.N,by=ID]

关于按列值复制 data.table 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29995920/

25 4 0