В базе R вы можете найти первое число за последний месяц, используя seq
( кредиты на @G.Grothendieck) и заменяя день первым с использованием strftime
.
last.1st <-
as.Date(paste0(strftime(seq(today, length=2, by="-1 month")[2], format="%Y-%m"), "-01"))
Первое число текущего месяца может быть получено с помощью gsub
и регулярных выражений.
curr.1 <- as.Date(gsub("\\d{2}$", "01", Sys.Date()))
Тогда подмножество, как обычно, является простым. Весь период:
dat[dat$date >= last.1, ]
# order.num date
# 18 432174 2020-02-01
# 19 432175 2020-02-03
# 20 432176 2020-02-05
# 21 432177 2020-02-07
# 22 432178 2020-02-09
# 23 432179 2020-02-11
# 24 432180 2020-02-13
# 25 432181 2020-02-15
# 26 432182 2020-02-17
# 27 432183 2020-02-19
# 28 432184 2020-02-21
# 29 432185 2020-02-23
# 30 432186 2020-02-25
# 31 432187 2020-02-27
# 32 432188 2020-02-29
# 33 432189 2020-03-02
# 34 432190 2020-03-04
# 35 432191 2020-03-06
# 36 432192 2020-03-08
# 37 432193 2020-03-10
# 38 432194 2020-03-12
# 39 432195 2020-03-14
# 40 432196 2020-03-16
И только за последний месяц:
dat[dat$date >= last.1 & dat$date <= curr.1, ]
# order.num date
# 18 432174 2020-02-01
# 19 432175 2020-02-03
# 20 432176 2020-02-05
# 21 432177 2020-02-07
# 22 432178 2020-02-09
# 23 432179 2020-02-11
# 24 432180 2020-02-13
# 25 432181 2020-02-15
# 26 432182 2020-02-17
# 27 432183 2020-02-19
# 28 432184 2020-02-21
# 29 432185 2020-02-23
# 30 432186 2020-02-25
# 31 432187 2020-02-27
# 32 432188 2020-02-29
Игрушечные данные
dat <- structure(list(order.num = c(432157, 432158, 432159, 432160,
432161, 432162, 432163, 432164, 432165, 432166, 432167, 432168,
432169, 432170, 432171, 432172, 432173, 432174, 432175, 432176,
432177, 432178, 432179, 432180, 432181, 432182, 432183, 432184,
432185, 432186, 432187, 432188, 432189, 432190, 432191, 432192,
432193, 432194, 432195, 432196), date = structure(c(18259, 18261,
18263, 18265, 18267, 18269, 18271, 18273, 18275, 18277, 18279,
18281, 18283, 18285, 18287, 18289, 18291, 18293, 18295, 18297,
18299, 18301, 18303, 18305, 18307, 18309, 18311, 18313, 18315,
18317, 18319, 18321, 18323, 18325, 18327, 18329, 18331, 18333,
18335, 18337), class = "Date")), class = "data.frame", row.names = c(NA,
-40L))