You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保留DataFrame中含无月份年份格式的行?

筛选包含无月份年份格式的DataFrame行

场景说明

现有如下R语言DataFrame:

df <- data.frame(
  id = c(1,2,3),
  date1 = c("2014-Dec 2018","2009-2010","Jan 2009-Aug 2010"),
  date2 = c("Feb 2016-Dec 2018","2014-Dec 2018","Oct 2013-Dec 2018")
)

需要保留**任意列中存在无月份的纯年份(月份为3字母格式,如Jan/Dec)**的行,最终排除所有日期串均带3字母月份前缀的行(如id=3的行)。

解决方案

通过正则表达式匹配无月份前缀的年份,结合行级筛选实现需求:

1. 定义匹配规则

使用负向后瞻正则,确保匹配的4位年份前没有"3字母月份+空格"的前缀:

pattern <- "(^|(?<![A-Z][a-z]{2} ))\\d{4}(-|$)"

2. Base R 实现

# 对每行的date1/date2列检查是否存在匹配项
filtered_df <- df[apply(df[, c("date1", "date2")], 1, function(x) any(grepl(pattern, x, perl = TRUE))), ]

# 查看结果
filtered_df

3. dplyr 实现(更简洁)

library(dplyr)

filtered_df <- df %>%
  rowwise() %>%
  filter(any(grepl(pattern, c(date1, date2), perl = TRUE))) %>%
  ungroup()

输出结果

id          date1              date2
1  1 2014-Dec 2018 Feb 2016-Dec 2018
2  2     2009-2010    2014-Dec 2018

内容的提问来源于stack exchange,提问作者Erik Brole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:55:25