如何在R中从指定字符串提取ANNIVERSARY相关日期与金额生成data frame
在R中提取字符串里的ANNIVERSARY日期与股息金额
实现步骤:
- 加载字符串处理工具包
stringr(首次运行需先执行install.packages("stringr")完成安装) - 定义原始文本字符串
- 用正则表达式匹配所有「日期 + ANNIVERSARY + 金额」的目标片段
- 提取匹配结果并转换为指定结构的数据框
完整代码:
# 加载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
相关产品推荐
相关产品推荐

