Извлечение года и месяца из даты в R - PullRequest
1 голос
/ 20 апреля 2019

Итак, у меня есть кадр данных в R:

Date

2002-01-24
2003-02-25
2004-03-26

, и когда я проверяю тип данных столбца Дата,

str(df$Date)

он имеет «Дата» type.

Теперь я хочу создать новый столбец с именем «Месяц», в котором я бы взял часть года и месяца в столбце «Дата» без дня.

Date           Month
2002-01-24     2002-01
2003-02-25     2003-02
2004-03-26     2004-03

Ниже показано, как я это сделал:

df$Month <- format(as.Date(df$Date), "%Y-%m"))

, но когда я запускаю

str(df$Month)

, он говорит, что он имеет тип "chr" вместо "Дата" .Есть ли способы сохранить его в типе данных "Date" вместо преобразования в chr?

1 Ответ

1 голос
/ 20 апреля 2019

Класс Date описывает определенный день. (Кстати, внутренним представлением является число дней с 1970-01-01.) Таким образом, вы не можете иметь Date без указания дня.

Если вы хотите сохранить класс Date при обозначении определенного месяца, вы можете округлить его до первого дня месяца :

lubridate::floor_date(as.Date("2019-04-19"), "month")

, который вернет 2019-04-01.

С данными ОП:

df <- data.frame(Date = as.Date(c("2002-01-24", "2003-02-25", "2004-03-26")))
df$Month <- lubridate::floor_date((df$Date), "month")
df
        Date      Month
1 2002-01-24 2002-01-01
2 2003-02-25 2003-02-01
3 2004-03-26 2004-03-01
str(df)
'data.frame': 3 obs. of  2 variables:
 $ Date : Date, format: "2002-01-24" "2003-02-25" "2004-03-26"
 $ Month: Date, format: "2002-01-01" "2003-02-01" "2004-03-01"

Это очень удобно для построения ежемесячных агрегатов.

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