Конвертация даты в R - PullRequest
       7

Конвертация даты в R

0 голосов
/ 14 марта 2019

У меня есть столбец даты в следующем формате.Я пытаюсь извлечь день недели.Но он возвращает NA.

df = data.frame(date=c("05-SEP-18", "10-SEP-18", "22-SEP-18"))
str(df)
'data.frame':   3 obs. of  1 variable:
 $ date: Factor w/ 3 levels "05-SEP-18","10-SEP-18",..: 1 2 3
df$day <- weekdays(as.Date(df$date, '%d-%M-%Y'))
head(df)
   date  day 
1 05-SEP-18 <NA>
2 10-SEP-18 <NA>
3 22-SEP-18 <NA>

Я преобразовал коэффициенты в char.Он все еще возвращает NA

df$date <- as.character(df$date)
df$day <- weekdays(as.Date(df$date, '%d-%M-%Y'))
head(df)
date  day 1 05-SEP-18 <NA> 2 10-SEP-18 <NA> 3 22-SEP-18 <NA>

Любая помощь, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 14 марта 2019

Попробуйте это с пакетом lubridate:

library(lubridate)
df = data.frame(date = c("05-SEP-18", "10-SEP-18", "22-SEP-18"))
df$date <- as.Date(df$date)
#define timezone
lct <- Sys.getlocale("LC_TIME")
Sys.setlocale("LC_TIME", "C")
df$date <- as.Date(df$date, format = "%d-%b-%y")
wd <- weekdays(df$date)

Надеюсь, это поможет

0 голосов
/ 14 марта 2019

как упомянуто выше lubridate - это простое решение для анализа даты и последующего использования tidyverse для объединения функций и создания новых столбцов:

  df %>% 
    mutate(date = dmy(date)) %>% 
    mutate(day  = weekdays(date))

        date       day
1 2018-09-05 Wednesday
2 2018-09-10    Monday
3 2018-09-22  Saturday

, так что вы можете указать формат даты вручнуюиспользование таких функций, как dmy в lubridate, упрощает это, когда дата имеет несколько стандартный формат.

0 голосов
/ 14 марта 2019

Попробуйте as.Date(df$date, '%d-%b-%y'). %y% - двухзначный год. %b% - сокращенный месяц символа.

https://www.google.com/amp/s/www.r-bloggers.com/date-formats-in-r/amp/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...