Форматирование даты в новый столбец год / квартал - PullRequest
0 голосов
/ 09 июля 2019

У меня есть дата в этом формате.

Timestamp  variation_id  
 5-Aug-16       A
 6-Aug-16       A
11-Aug-16       A

Я хочу создать новый столбец, определяющий, в каком квартале года он основан на столбце Временная метка, и он будет выглядеть примерно так ...

Timestamp  variation_id  Quarter
 5-Aug-16       A        2016 Q3
 6-Aug-16       A        2016 Q3
11-Aug-16       A        2016 Q3

Это код, который я написал до сих пор, он создал новый столбец, но в нем нет ничего, кроме NA ...

df$Timestamp <- as.yearqtr(df$Timestamp, format = "%dd-%mmm-YY%"

Как мне заставить это работать? Есть ли более простой способ? Цени любую помощь!

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Это должно быть все что нужно:

df <- data.frame(date = c("5-Aug-16", "6-Aug-16", "2-Jan-16"), 
                                 variation_id = "A",
                                 stringsAsFactors = FALSE)

as.yearqtr(as.Date(df$date,"%d-%b-%y"))

Или, похоже, вы можете использовать as.yearqtr непосредственно для символов:

as.yearqtr(df$date,"%d-%b-%y")

Обратите внимание, как я указал формат в as.Date и прочитайте ?strptime для описания того, как работают символы форматирования.

0 голосов
/ 09 июля 2019

Я бы подумал сделать это по частям, т. Е.

require(tidyverse)

df <- data.frame(date = c("5-Aug-16", "6-Aug-16", "2-Jan-16"), 
                 variation_id = "A")

df %>% 
  mutate(fmtdate = lubridate::month(lubridate::dmy(date)),
         q = cut(fmtdate, breaks = c(-1, 3, 6, 9, 12), labels = c("Q1", "Q2", "Q3", "Q4")),
         Quarter = str_c(lubridate::year(lubridate::dmy(date)), " ", q)) %>% 
  select(date, variation_id, Quarter)

#       date     variation_id     Quarter
# 1 5-Aug-16                A     2016 Q3
# 2 6-Aug-16                A     2016 Q3
# 3 2-Jan-16                A     2016 Q1

Может быть, кто-то может помочь вам найти более элегантное решение, чем это, но это лучшее, что я могу сделать на данный момент!

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