我的开始日期列如下所示。其中一些有日期和时间,而有些只有日期或时间,而剩下的是NA。
时间和小时应该与日期在同一行,而应该是上一行的日期和时间。
Start.Date Values
11/6/2017\n07:00 a
3/22/2018\n06:38 b
11/6/2017 c
07:00 d
<NA> e
<NA> f
<NA> g
<NA> h
11/5/2017\n07:00 i
3/21/2018\n06:38 j
我想要的输出应该如下所示:
Start.Date Values
11/6/2017\n07:00 a
3/22/2018\n06:38 b
11/6/2017\n07:00 c
11/6/2017\n07:00 d
11/6/2017\n07:00 e
11/6/2017\n07:00 f
11/6/2017\n07:00 g
11/6/2017\n07:00 h
11/5/2017\n07:00 i
3/21/2018\n06:38 j
有没有这样做?我尝试使用tidyr来提取它,但我没有得到理想的结果。谢谢!
答案 0 :(得分:0)
首先尝试使用Start.Date
中的mdy_hm
函数转换lubridate
。然后使用tidyr::fill
更新不包含有效日期/时间的行(即NA
)。
library(dplyr)
library(tidyr)
library(lubridate)
df %>% mutate(Start.Date = mdy_hm(Start.Date)) %>%
fill(Start.Date)
# Start.Date Values
# 1 2017-11-06 07:00:00 a
# 2 2018-03-22 06:38:00 b
# 3 2018-03-22 06:38:00 c
# 4 2018-03-22 06:38:00 d
# 5 2018-03-22 06:38:00 e
# 6 2018-03-22 06:38:00 f
# 7 2018-03-22 06:38:00 g
# 8 2018-03-22 06:38:00 h
# 9 2017-11-05 07:00:00 i
# 10 2018-03-21 06:38:00 j
注意:上述答案与OP的预期不符。行也许需要正确排列。
数据:强>
df <- read.table(text =
"Start.Date Values
'11/6/2017\n07:00' a
'3/22/2018\n06:38' b
11/6/2017 c
07:00 d
NA e
NA f
NA g
NA h
'11/5/2017\n07:00' i
'3/21/2018\n06:38' j",
header = TRUE, stringsAsFactors = FALSE)