r - R从变量中提取特定文本
问题描述
我有一个包含此列的数据框:
VAR1
var_1.1
var_1.2
var_1.3
var_2.1
var_2.2
var_2.3
所以我想要的是创建一个只保留的新列
VAR1 VAR2
var_1.1 1
var_1.2 1
var_1.3 1
var_2.1 2
var_2.2 2
var_2.3 2
基本上保留了“_”和“.”之间的文字。
谢谢!
解决方案
我们可以使用str_extract
匹配一个或多个数字 ( \\d+
)_
后跟.
df1 %>%
mutate(VAR2 = str_extract(VAR1, "(?<=_)\\d+(?=\\.)"))
# VAR1 VAR2
#1 var_1.1 1
#2 var_1.2 1
#3 var_1.3 1
#4 var_2.1 2
#5 var_2.2 2
#6 var_2.3 2
或str_replace
将数字捕获为一个组,并在替换中指定捕获组的反向引用
df1 %>%
mutate(VAR2 = str_replace(VAR1, ".*_(\\d+)\\..*", "\\1"))
或sub
从base R
sub(".*_(\\d+)\\..*", "\\1", df1$VAR1)
数据
df1 <- structure(list(VAR1 = c("var_1.1", "var_1.2", "var_1.3", "var_2.1",
"var_2.2", "var_2.3")), class = "data.frame", row.names = c(NA,
-6L))
推荐阅读
- python - 如何从 Anaconda 更新/删除 conda-forge 频道?
- python - Python read_text() 添加额外的字符串
- c# - 看旋转 2d 等效
- sqlite - SQLite:主键和 sqlitedatabase.insert
- asp.net - 浏览器不缓存处理程序响应,除非存在查询字符串
- mysql - 错误 2002 (HY000): 无法使用标准 sintax 登录 mysql
- ssl - 有没有办法将配置传递给 Nginx Ingress Controller
- mysql - 具有 200K 帖子的 Wordpress 站点 SQL_CALC_FOUND_ROWS 与 JOIN 慢?优化速度?
- dart - Flutter 医生在 macos 上崩溃了
- javascript - 如何修复'index.js:1446警告:无法在未安装的组件上调用setState(或forceUpdate)......“在ReactJS