按字符串筛选数据集:保留指定日期范围的Mazda记录
解决方案
先看你的原始数据集:
df <- structure(list(Car = c("Mazda", "Mazda", "Mazda", "Mazda", "Mazda", "Mazda", "Lexus"), Date = c("2/20/20", "2/21/20", "2/22/20", "2/23/20", "2/24/20", "2/25/20", "9/3/20")), class = "data.frame", row.names = c(NA, -7L))
要实现需求,分两步操作:
- 第一步:把
Date列从字符串转换成可比较的日期格式,用as.Date()函数并指定格式%m/%d/%y - 第二步:用逻辑条件筛选——要么车型不是Mazda,要么是Mazda且日期在2020-02-20到2020-02-23之间
基础R语法实现
# 转换日期格式 df$Date <- as.Date(df$Date, format = "%m/%d/%y") # 筛选数据 filtered_df <- df[!(df$Car == "Mazda" & (df$Date < as.Date("2020-02-20") | df$Date > as.Date("2020-02-23"))), ]
dplyr语法实现(更直观)
library(dplyr) filtered_df <- df %>% mutate(Date = as.Date(Date, format = "%m/%d/%y")) %>% filter(!(Car == "Mazda" & (Date < as.Date("2020-02-20") | Date > as.Date("2020-02-23"))))
运行后filtered_df会保留所有非Mazda的行,以及日期在2/20/20 - 2/23/20范围内的Mazda行。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

