Объедините дату и время из разных строк - PullRequest
0 голосов
/ 07 мая 2018

Мой столбец даты начала выглядит примерно так. Некоторые из них имеют как дату, так и время, в то время как другие имеют только дату или время, а остальные - 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, чтобы извлечь его, но я не получаю желаемого результата. Спасибо!

1 Ответ

0 голосов
/ 07 мая 2018

Сначала попытайтесь преобразовать 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

Примечание: Приведенный выше ответ не совпадает с ожиданием ОП. Возможно, строки должны быть расположены правильно.

Данные:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...