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.