在R语言中按季度/特定时段拆分日期及筛选异常问题求助
R语言日期筛选问题解决办法
问题根源:你的
Admin_Day列大概率是字符类型而非日期类型。字符型日期是按字符串顺序比较的,比如"2022-10-01"会被判定为小于"2022-4-30"(因为字符"1"在"4"前面),导致大量非目标日期被误筛选进来。推荐解决办法:先将
Admin_Day转换为日期类型
把列转成Date类型后,日期比较会遵循实际的时间逻辑,不会出现字符串排序的错误:# 转换日期列类型 filtered_data$Admin_Day <- as.Date(filtered_data$Admin_Day) # 筛选2022年2-4月数据 Q3 <- filtered_data %>% filter(Admin_Day >= as.Date("2022-02-01") & Admin_Day <= as.Date("2022-04-30"))之后用
length(unique(Q3$Admin_Day))检查,结果应该是符合预期的天数(2022年2月28天+3月31天+4月30天=89天)。替代解决办法:保持字符类型,拆分筛选条件
如果暂时不想转换日期类型,可以像你处理Q2那样,把每个月的范围单独拆分出来,避免跨月的字符比较问题:Q3 <- filtered_data %>% filter( (Admin_Day >= "2022-02-01" & Admin_Day <= "2022-02-28") | (Admin_Day >= "2022-03-01" & Admin_Day <= "2022-03-31") | (Admin_Day >= "2022-04-01" & Admin_Day <= "2022-04-30") )
内容的提问来源于stack exchange,提问作者Yvonne
相关产品推荐
相关产品推荐

