【发布时间】:2016-11-02 21:42:15
【问题描述】:
我有两个 data.frame 时间序列。第一个是完整的,第二个仅包含具有正确变量值的时间步长。我需要保留所有其他变量,但想要 NA 出现在第二个 df 中的所有变量。这里是例子:
library(dplyr)
library(tidyverse)
library(lubridate)
#test data:
TDF <- tibble(DATE = seq( make_datetime(2007,09,23,06,00), make_datetime(2008,07,05,23,00), by = 600),
V1 = round(runif(length(DATE)),2),
V2 = round(runif(length(DATE)),2),
V3 = round(runif(length(DATE)),2))
TDF2 <- TDF
TDF2 <- TDF2[TDF2$V1>0.7,]
输出:
> TDF
# A tibble: 41,287 × 4
DATE V1 V2 V3
<dttm> <dbl> <dbl> <dbl>
1 2007-09-23 06:00:00 0.89 0.21 0.03
2 2007-09-23 06:10:00 0.26 0.54 0.70
3 2007-09-23 06:20:00 0.74 0.22 0.80
4 2007-09-23 06:30:00 0.31 0.48 0.38
5 2007-09-23 06:40:00 0.93 0.26 0.21
> TDF2
# A tibble: 11,972 × 4
DATE V1 V2 V3
<dttm> <dbl> <dbl> <dbl>
1 2007-09-23 06:00:00 0.89 0.21 0.03
2 2007-09-23 06:20:00 0.74 0.22 0.80
3 2007-09-23 06:40:00 0.93 0.26 0.21
4 2007-09-23 07:20:00 0.91 0.36 0.83
5 2007-09-23 07:40:00 0.95 0.87 0.91
这就是我需要的:
> TDF_modified
# A tibble: 41,287 × 4
DATE V1 V2 V3
<dttm> <dbl> <dbl> <dbl>
1 2007-09-23 06:00:00 0.89 0.21 0.03
2 2007-09-23 06:10:00 NA 0.54 0.70
3 2007-09-23 06:20:00 0.74 0.22 0.80
4 2007-09-23 06:30:00 NA 0.48 0.38
5 2007-09-23 06:40:00 0.93 0.26 0.21
我需要一个通用的解决方案,只需使用两个 data.frame。我可以通过循环来做到这一点,但我敢打赌有一种更优雅的方式。非常感谢先进!
【问题讨论】: