r - 如何使用正则表达式逐行提取字符串?
问题描述
我在数据框中有一列filename
,如下所示:
/testData/THQ/TAIRATE.20030314.190000.tif
/testData/THQ/TAIRATE.20030314.200000.tif
/testData/THQ/TAIRATE.20030314.210000.tif
/testData/THQ/TAIRATE.20030314.220000.tif
我想从中提取时间戳并将其存储为另一列。但我不熟悉正则表达式。到目前为止,我已经做到了:
tdat %>%
dplyr::rowwise() %>%
dplyr::mutate(timestamp = str_extract(as.character(filename), "[^//TAIRATE]+$")) %>%
glimpse()
结果
.20030314.190000.tif
.20030314.200000.tif
.20030314.210000.tif
.20030314.220000.tif
预期结果
20030314190000
20030314200000
20030314210000
20030314220000
问题:如何编写正确的正则表达式或有更好的方法?
解决方案
str_extract
和其他此类函数是矢量化的,您不需要逐行。
在这种情况下,您可以在基础 R 中使用sub
.
sub('.*TAIRATE\\.(\\d+)\\.(\\d+).*', '\\1\\2', df$filename)
#[1] "20030314190000" "20030314200000" "20030314210000" "20030314220000"
推荐阅读
- sql-server - 如何从一个表中选择所有条目,并对另一个表的子集求和
- c# - Bootstrap Modal 将输入参数传递给控制器而不关闭模态
- java - Vaadin:不能强制从线程更新progressBar
- javascript - Socket IO - NodeJS 需要外部脚本吗?
- javascript - 从第一个数组中删除除第一次出现的第二个数组项之外的所有元素
- python - pip 升级后无法安装 numpy
- javascript - 根据给定变量的长度动态创建函数
- python - Python - Argparse:调用帮助参数返回错误
- youtube-api - Youtube Data API V3 - 通过 PHP 代码上传视频显示错误
- perl - 如何在 Perl 中将一系列数字(例如:100 到 200)作为命令行参数传递?