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

如何在R中从指定字符串提取ANNIVERSARY相关日期与金额生成data frame

在R中提取字符串里的ANNIVERSARY日期与股息金额

实现步骤:

  1. 加载字符串处理工具包stringr(首次运行需先执行install.packages("stringr")完成安装)
  2. 定义原始文本字符串
  3. 用正则表达式匹配所有「日期 + ANNIVERSARY + 金额」的目标片段
  4. 提取匹配结果并转换为指定结构的数据框

完整代码:

# 加载stringr包
library(stringr)

# 定义原始字符串
text <- "05/05/2005 ANNIVERSARY $367.62 ANNUAL DIVIDEND DECLARED UNDER THE PAIO UP ADDITIONS 20,965 2,203 23,168 | PAID UP ADDITION OPTION. $367.62 PURCHASED PAID UP ADDITIONS OF 2,203 02/15/2006 WITHDRAWAL ($77.50) VALUE OF PAID UP ADDITIONS OF 464 PAID UP ADDITIONS 23,168 (464) 22,704 APPLIED TOWARDS CHECK-O-MATIC PREMIUM DUE 03/05/2006 04/11/2006 05/05/2006 ANNIVERSARY $415.70"

# 正则匹配模式:捕获日期(MM/DD/YYYY)和带$的金额
pattern <- "(\\d{2}/\\d{2}/\\d{4}) ANNIVERSARY (\\$\\d+\\.\\d{2})"

# 提取所有匹配的分组内容
matches <- str_match_all(text, pattern)[[1]]

# 转换为目标数据框
result_df <- data.frame(
  Date = matches[, 2],
  Dividend = matches[, 3],
  stringsAsFactors = FALSE
)

# 查看最终结果
print(result_df)

代码说明:

  • str_match_all会返回所有符合模式的匹配结果,每个结果包含完整匹配项、捕获的日期、捕获的金额三部分
  • 正则表达式细节:
    • (\\d{2}/\\d{2}/\\d{4}) 精准匹配「两位数字/两位数字/四位数字」格式的日期
    • (\\$\\d+\\.\\d{2}) 匹配「$+整数部分+.+两位小数」格式的金额
  • 运行后生成的result_df即为你需要的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:05:20