简体   繁体   中英

Does lubridate have a function similar to the yearmon function of zoo?

I am dealing with a data.frame with a month variable that only has year and month component. Part of my data is as below:

     month         DIV  MKTP
1  1941-12 0.005752218 -4.87
2  1942-01 0.005767111  0.79
3  1942-02 0.005781771 -2.46
4  1942-03 0.005859665 -6.58
5  1942-04 0.005906924 -4.37
6  1942-05 0.005890041  5.94
7  1942-06 0.005941640  2.69
8  1942-07 0.005962464  3.51
9  1942-08 0.005936732  1.80
10 1942-09 0.006007593  2.61

I would like to transform the month variable to a yearmon format for subseting purpose. My code is as below:

require(zoo,dplyr)
  df %>%
  mutate(month = as.yearmon(month)) %>%
  filter(month >= as.yearmon("1942-3") & month <= as.yearmon("1942-8"))

I would like to know if lubridate package has a similar function to yearmon that could take input of a combination of year and month.

Here are lubridate's functions and the answer is no, because lubridate is for dealing with dates and dates have days. You could assume that the day is 01 and convert to a date format using ymd or just stick with zoo::yearmon .

We can filter using year , month functions after converting to Date class with ymd

library(tidyverse) 
df %>% 
   mutate(date = ymd(paste0(month, "-01"))) %>% 
   filter(year(date)>= 1942, month(date)>3, month(date)<=8, year(date) < 1943) %>%
   select(-date)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM