这是我的数据
print(data)
mydates
1 9/17/2019
2 3/8/2020
3 9/20/2020
4 7/19/2020
5 10/22/2020
6 9/12/2020
我想过滤一下,这样我只能看到9月份的日期,但它不起作用。
这是我的代码
data$mydates <- as.Date(data$mydates, format = "%m/%d/%Y")
Septdata <- data %>% filter(mydates < '2020-01-09')
```
Is this correct?
library(lubridate)
df <- setDT(your_dataset)
df_sep <- df[mydates >= as.Date('2020-09-01') & mydates <= as.Date('2020-09-30')]
如果您想在两个日期之间进行筛选,另一个选项是使用dplyr包:
data%>% filter(mydate >= as.Date("2020-09-01") & mydate <= as.Date("2020-01-09"))
使用subset
的base R
subset(data, mydate >= as.Date("2020-09-01") & mydate <= as.Date("2020-01-09"))
您可以将mydate
转换为日期类并过滤特定月份和/或年份的
如果你想要"九月"中的所有日期:
data$mydates <- as.Date(data$mydates, format = "%m/%d/%Y")
subset(data, as.integer(format(mydates, '%m')) == 9)
# mydates
#1 2019-09-17
#2 2020-09-20
#3 2020-09-12
如果你想要2020年9月的所有日期
subset(data, as.integer(format(mydates, '%m')) == 9 &
as.integer(format(mydates, '%Y')) == 2020)
# mydates
#1 2020-09-20
#2 2020-09-12
您可以使用dplyr
+lubridate
:实现相同的逻辑
library(dplyr)
library(lubridate)
data %>%
mutate(mydates = mdy(mydates)) %>%
filter(month(mydates) == 9)
data %>%
mutate(mydates = mdy(mydates)) %>%
filter(month(mydates) == 9 & year(mydates) == 2020)