Отделение даты и времени от метки времени - PullRequest
1 голос
/ 20 мая 2019

Я смотрел на другие варианты из предыдущих ответов, но ни один не дал мне правильный вывод.Я хотел бы разделить timestamp на date и time, используя R

sorted_transactions_table$TRANSACTION_DATE <- as.Date(sorted_transactions_table$TRANSACTION_TIME)

Я пробовал это, но я получаю ошибку:

Ошибка в charToDate (x): строка символов не в стандартном однозначном формате

Метка времени из моего набора данных имеет формат:

01-OCT-18 12.01.23.000000 AM

Ответы [ 2 ]

3 голосов
/ 20 мая 2019

Сначала преобразуйте его в стандартный формат даты и времени, а затем используйте format

df$TRANSACTION_DATE <- as.POSIXct(df$TRANSACTION_DATE, 
                      format = "%d-%b-%y %H.%M.%OS %p")
transform(df, Date = as.Date(TRANSACTION_DATE), 
              #Also Date = format(TRANSACTION_DATE, "%Y-%m-%d") would work
              time = format(TRANSACTION_DATE, "%T"))

#  col1    TRANSACTION_DATE       Date     time
#1    1 2018-10-01 12:01:23 2018-10-01 12:01:23
#2    2 2018-10-01 12:02:23 2018-10-01 12:02:23
#3    3 2018-10-01 12:03:23 2018-10-01 12:03:23

Вы также можете сделать это в dplyr цепочке

library(dplyr)

df %>%
  mutate(TRANSACTION_DATE = as.POSIXct(TRANSACTION_DATE, 
                           format = "%d-%b-%y %H.%M.%OS %p"), 
     Date = as.Date(TRANSACTION_DATE), 
     time = format(TRANSACTION_DATE, "%T"))

Считайте ?strptime для всех параметров форматирования.

Данные

Использование воспроизводимого примера

df <- data.frame(col1 = 1:3, TRANSACTION_DATE = c("01-OCT-18 12.01.23.000000 AM", 
                 "01-OCT-18 12.02.23.000000 AM", "01-OCT-18 12.03.23.000000 AM"))

df
#  col1             TRANSACTION_DATE
#1    1 01-OCT-18 12.01.23.000000 AM
#2    2 01-OCT-18 12.02.23.000000 AM
#3    3 01-OCT-18 12.03.23.000000 AM
2 голосов
/ 20 мая 2019

Я бы использовал пакет lubridate:

library(lubridate)
library(dplyr)

df %>%
  mutate(TRANSACTION_DATE = dmy_hms(TRANSACTION_DATE),
         Date = date(TRANSACTION_DATE), 
         time = format(TRANSACTION_DATE, "%T"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...