gpt4 book ai didi

r - 在 R 中对齐多个时间序列

转载 作者:行者123 更新时间:2023-12-02 04:34:41 24 4
gpt4 key购买 nike

我将一些时间序列导入到 Excel 中,我有 20 列,每隔一列包含日期。我希望只有一个日期列,所有数据都对齐,NA 不可用。

2007-06-11 1509 2007-06-11 1138 2008-01-17 990
2007-06-12 1493 2007-06-13 1200 2008-01-18 800
2007-06-13 1324 2007-06-14 1122 2008-01-19 880

应该给予

2007-06-11 1509 1138 NA
2007-06-12 1493 NA NA
2007-06-13 1324 1200 NA
...

谢谢!

最佳答案

将数据分成几部分,然后使用 all.x = TRUE 选项merge 来连接这些部分(您可以使用 Reduce 优雅地做到这一点) >).

dat <- read.table(sep=' ', text=
'2007-06-11 1509 2007-06-11 1138 2008-01-17 990
2007-06-12 1493 2007-06-13 1200 2008-01-18 800
2007-06-13 1324 2007-06-14 1122 2008-01-19 880')

#### break dat into appropriate pieces
# 1) alternating column indices
col_idx <- seq(1, ncol(dat), by=2)

# 2) each piece is two columns
dat_pieces <- lapply(col_idx, function(i) {
dat_piece <- dat[, c(i, i+1)]
# use common name for date columns
names(dat_piece)[1] <- 'date'
return(dat_piece)
})

#### merge all pieces
my_new_thing <- Reduce(
function(a, b) merge(a, b, by = 'date', all.x =T),
dat_pieces)

结果:

        date   V2   V4 V6
1 2007-06-11 1509 1138 NA
2 2007-06-12 1493 NA NA
3 2007-06-13 1324 1200 NA

关于r - 在 R 中对齐多个时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44644864/

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