我构建了一个自动从网页中报废的数据框,其中一个变量是文本形式为“5月12日”的日期。
尽管如此,有时会在日期之后附上一些字符(在某些情况下是奇怪的字符),例如:“May20õ”,“Dez 1”,“Oct12ABCdáé”。 对于这些情况,我想用正确的字符替换值,因此:“Dec 24”,“Oct 1”。
在谷歌搜索多次解决方案并尝试以下函数:sub,gsub和grep之后,我找不到找到正确函数的方法。
我看到正则表达式有一个陡峭的学习曲线,但在使用工具http://regexr.com/后,我可以定义正则表达式以匹配问题出现的观察中的模式。的([A-Z] {1} [A-Z] {2})\ S \ d + *
此时,我有以下示例:
vector = c("May 20", "Dez 1", "Oct 12ABCdáé”)
我尝试的最后一个解决方案是:
dateformat = gsub(pattern = "([A-Z]{1}[a-z]{2})\\s\\d+.*", replacement = "([A-Z]{1}[a-z]{2})\\s\\d+", x = vector)
但是当然这给了我一个替换文本字符串“([A-Z] {1} [a-z] {2})\ s \ d +”每个。
> dateformat
[1] "([A-Z]{1}[a-z]{2})sd+" "([A-Z]{1}[a-z]{2})sd+"
[3] "([A-Z]{1}[a-z]{2})sd+"
我真的不明白我必须包含在替换参数中以删除坏字符(如果它们存在)。
答案 0 :(得分:1)
我添加了一个捕获组和一个反向引用"\\1"
:
sub("^([A-Z]{1}[a-z]{2}\\s\\d+).*", "\\1", vector)
[1] "May 20" "Dez 1" "Oct 12"
replace参数接受像'\\1'
这样的反向引用,但不是您使用的典型正则表达式模式。反向引用返回您创建的模式和您定义的捕获组。在这种情况下,我们的捕获组是我们用parantheticals (..)
概述的缩写月份和日期。 <{1}}放置在替换参数中时,将返回在这些括号内捕获的任何文本。
这quick-start guide可能会有所帮助
答案 1 :(得分:0)
我们也可以尝试
modelLosses = kfoldLoss(Mdl,'mode','individual');