Tôi có một bộ dữ liệu được cấu trúc như sau:hàng Nhân rộng trong data.table bởi giá trị cột
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
tôi cần phải tái tạo mỗi hàng N = Tenure
lần. ví dụ. Tôi cần phải tái tạo hàng đầu tiên 2 lần (kể từ Tenure = 2
tôi cần tập dữ liệu chuyển đổi của tôi để trông giống như sau:.
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
...
...
Có cách nào hiệu quả hơn (một nhiều data.table
chiều) để làm điều này ? cách của tôi là khá chậm tôi đã suy nghĩ nên có một cách để làm điều này bằng cách sử dụng kết hợp by-without-by
usng .EACHI
Thật đơn giản! Cám ơn rất nhiều! –