如何在R DataFrame中筛选每月20日至25日的数据?
在R中筛选DataFrame仅保留每月20日至25日的数据
方法一:Base R(无需额外安装包)
先构建示例数据:
df <- data.frame( Event = c("Football", "Work", "Holiday", "Running"), Date = c("20.12.2016", "15.10.2019", "30.11.2018", "24.01.2020") )
步骤:
- 将字符型日期转换为R的日期格式
- 提取日期中的“日”部分
- 筛选日数在20-25之间的行
代码实现:
# 转换日期格式 df$Date <- as.Date(df$Date, format = "%d.%m.%Y") # 提取日并转为整数 df$day <- as.integer(format(df$Date, "%d")) # 筛选目标数据,保留Event和Date列 filtered_df <- df[df$day >= 20 & df$day <= 25, c("Event", "Date")]
方法二:Tidyverse(dplyr + lubridate)
这种方式代码更简洁,适合处理大型数据集:
先加载所需包(如果未安装,先运行install.packages(c("dplyr", "lubridate"))):
library(dplyr) library(lubridate)
然后用管道操作完成转换和筛选:
filtered_df <- df %>% mutate(Date = dmy(Date)) %>% # 自动识别dd.mm.yyyy格式的日期 filter(between(day(Date), 20, 25)) # 筛选日数在20到25之间的记录
注意事项
- 如果你的
Date列已经是R的日期类型(而非字符型),可以跳过日期转换步骤,直接提取日数进行筛选。 - 两种方法最终得到的
filtered_df就是你需要的结果:
> filtered_df Event Date 1 Football 2016-12-20 2 Running 2020-01-24
内容的提问来源于stack exchange,提问作者Thomasiko
相关产品推荐
相关产品推荐

