Преобразовать дату в первый день соответствующего месяца из кадра данных - PullRequest
1 голос
/ 13 апреля 2020

У меня есть датафрейм с именем df

Мне нужно преобразовать каждую дату в первый день этого месяца.

Date          Sales
02-12-2018     1000
03-11-2019     2000
24-08-2010     3000

Ожидаемый результат

Date          Sales Date2
02-12-2018     1000  01-12-2018
03-11-2019     2000  01-11-2019 
24-08-2010     3000  01-08-2010

и так далее. Кажется, я не могу сделать это в R.

Ответы [ 4 ]

3 голосов
/ 13 апреля 2020

Преобразовать в дату и использовать floor_date из lubridate

library(lubridate)
floor_date(dmy(df$Date), 'month')
#[1] "2018-12-01" "2019-11-01" "2010-08-01"

data

df <- structure(list(Date = structure(1:3, .Label = c("02-12-2018", 
"03-11-2019", "24-08-2010"), class = "factor"), Sales = c(1000L, 
2000L, 3000L)), class = "data.frame", row.names = c(NA, -3L))
1 голос
/ 13 апреля 2020

Мы также можем использовать простое регулярное выражение для этого (используя данные, предоставленные @RonakShah)

sub(".*?-", "01-", df$Date)
#[1] "01-12-2018" "01-11-2019" "01-08-2010"
1 голос
/ 13 апреля 2020

Вы можете преобразовать в дату и затем отформатировать дату с "01" в слоте дней.

format(as.Date(df$Date, "%d-%m-%Y"), "%01-%m-%Y")
# [1] "01-12-2018" "01-11-2019" "01-08-2010"
0 голосов
/ 13 апреля 2020

Опция с anydate

library(anydate)
format(anydate(df$Date), "%01-%m-%Y")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...