как получить следующий месяц или текущий месяц на основе условий в R - PullRequest
0 голосов
/ 07 мая 2019

У меня есть данные ниже, из которых мне нужно создать вычисляемое поле - Change_Month.

Код псевдо для Change_Month: если change_dt меньше 15-го числа месяца, Change_Month - это тот же месяц, иначе это следующий месяц.

Adv_Code    Change_Dt     
A201        12/04/2017
A198        27/07/2017    
S1212       10/11/2017  

Я пытался сделать:

df = mutate(df,
                Change_Month = months(Change_Dt,abbreviate = FALSE))

Примечание : Change_Dt - это тип символов.

Expected output:
Adv_Code    Change_Dt   Change_Month     
A201        12/04/2017      April
A198        27/07/2017      August
S1212       10/11/2017      November

Может кто-нибудь помочь мне с ifelse в операторе mutate, чтобы получить желаемый результат?

1 Ответ

1 голос
/ 07 мая 2019

Мы можем использовать round_date от lubridate

library(lubridate)
df$Change_Month <- format(round_date(dmy(df$Change_Dt), unit = "month"), "%B")
df
#  Adv_Code  Change_Dt Change_Month
#1     A201 12/04/2017        April
#2     A198 27/07/2017       August
#3    S1212 10/11/2017     November

Однако вам не обязательно нужен пакет для этого. Вы можете сделать это и в базе R.

df$Change_Dt <- as.Date(df$Change_Dt, "%d/%m/%Y")
with(df, ifelse(as.integer(format(Change_Dt, "%d")) < 15, 
   format(Change_Dt, "%B"), format(Change_Dt + 30, "%B")))
#[1] "April"    "August"   "November"
...