作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将一些时间序列导入到 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/
我是一名优秀的程序员,十分优秀!