R语言按周和年份筛选数据:保留2022年第3周前的数据
按年份和周数筛选数据集
核心筛选逻辑:保留年份小于2022的所有数据,或者年份等于2022但周数小于3的数据,以此过滤掉2022年第3周及之后的所有记录。
dplyr 解决方案
假设你的数据框名为df,包含year(年份列)和week(周数列):
library(dplyr) filtered_df <- df %>% filter(year < 2022 | (year == 2022 & week < 3))
如果你的周数是带前缀的字符型(比如格式为W01、W03),需要先将其转换为数值型再筛选:
filtered_df <- df %>% mutate(week = as.numeric(sub("W", "", week))) %>% filter(year < 2022 | (year == 2022 & week < 3))
Base R 解决方案
如果不想依赖dplyr,直接用base R的子集操作即可:
filtered_df <- df[df$year < 2022 | (df$year == 2022 & df$week < 3), ]
针对字符型周数的处理:
df$week <- as.numeric(sub("W", "", df$week)) filtered_df <- df[df$year < 2022 | (df$year == 2022 & df$week < 3), ]
示例验证
原始数据集
df <- data.frame( year = c(2021, 2022, 2022, 2022, 2023), week = c(52, 1, 3, 10, 2), value = c(10, 20, 30, 40, 50) )
筛选后期望输出
# year week value # 1 2021 52 10 # 2 2022 1 20
内容的提问来源于stack exchange,提问作者akang
相关产品推荐
相关产品推荐

