R data.frame如何提取字符串列中首个$与[之间的特定模式文本
实现方案
你可以通过正则匹配提取目标字段,以下是两种常用实现方式:
1. 构造示例数据
df <- structure(list(variables = c("data$Ageee[data$Beneficiary == 1] and data$Age[data$Beneficiary == 0]", "data$var[data$Beneficiary == 1] and data$Age[data$Beneficiary == 0]", "data$variable_test[data$Beneficiary == 1] and data$Age[data$Beneficiary == 0]" ), values = c(0, 0, 0)), class = "data.frame", row.names = c(NA, -3L))
2. 基础R实现(无需安装额外包)
使用sub()函数结合正则替换,直接提取第一个$和第一个[之间的内容:
df$variables <- sub("^[^$]+\\$([^[]+)\\[.*", "\\1", df$variables)
3. stringr包实现(语法更直观)
如果你习惯使用tidyverse生态的工具,可以用stringr::str_extract()搭配环视正则直接匹配目标内容:
# 如未安装包先执行 install.packages("stringr") library(stringr) df$variables <- str_extract(df$variables, "(?<=\\$)[^[]+(?=\\[)")
运行以上任意一种方案后,得到的df结构就和你要求的输出完全一致。
内容的提问来源于stack exchange,提问作者Nuñes
相关产品推荐
相关产品推荐

