gpt4 book ai didi

R日期时间对齐并填充值

转载 作者:行者123 更新时间:2023-12-04 10:40:37 26 4
gpt4 key购买 nike

我有多个框架,为此目的假设 2。
每帧包含 2 列 - 一个索引列和一个值列

sz<-5;
frame_1<-data.frame(index=sort(sample(1:10,sz,replace=F)),value=rpois(sz,50));
frame_2<-data.frame(index=sort(sample(1:10,sz,replace=F)),value=rpois(sz,50));

框架_1:
 index value
1 49
6 62
7 58
8 30
10 50

框架_2:
index value
4 60
5 64
6 48
7 46
9 57

目标是创建第三个框架 frame_3,其索引将是 frame_1 和 frame_2 中的索引的并集,
frame_3<-data.frame(index = sort(union(frame_1$index,frame_2$index)));

并且将包含两个额外的列,value_1 和 value_2。

frame_3$value_1 由 frame_1$value 填充,frame_3$value_2 由 frame_2$value 填充;

这些应该像这样填写:
框架_3:
index value_1 value_2
1 49 NA
4 49 60 # value_1 is filled through with previous value
5 49 64 # value_1 is filled through with previous value
6 62 48
7 58 46
8 30 46 # value_2 is filled through with previous value
9 30 57 # value_1 is filled through with previous value
10 50 57 # value_1 is filled through with previous value

我正在寻找一种有效的解决方案,因为我正在处理数十万条记录

最佳答案

这个问题为 data.table 尖叫.您可以使用循环来使用 x[y, roll=TRUE] 一一递归地构造列。 .

require(data.table)
dt1 <- data.table(frame_1)
dt2 <- data.table(frame_2)
setkey(dt1, index)
setkey(dt2, index)
dt3 <- data.table(index = sort(unique(c(dt1$index, dt2$index))))
> dt1[dt2[dt3, roll=TRUE], roll=TRUE]

# index value value.1
# 1: 1 49 NA
# 2: 4 49 60
# 3: 5 49 64
# 4: 6 62 48
# 5: 7 58 46
# 6: 8 30 46
# 7: 9 30 57
# 8: 10 50 57

关于R日期时间对齐并填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14645329/

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