有人可以告诉我如何使用正则表达式将日期添加到日期吗?
这是我的开始代码:
#Create data frame
a = c("01/2009","03/2006","","12/2003")
b = c("03/2016","05/2010","07/2011","")
df = data.frame(a,b)
以下是我要创建的内容:
#Create data frame
a = c("01/01/2009","03/01/006","","12/01/2003")
b = c("03/01/2016","05/01/2010","07/01/2011","")
df = data.frame(a,b)
我试过这样的事情:
df$c <- gsub("(/.*)","\\01/\\1", df$a, perl=TRUE)
但显然没有得到我正在寻找的结果。我是regex的新手,正在寻求帮助。谢谢。
答案 0 :(得分:1)
如果您拥有的是dd/yyyy
或空值,则无需使用正则表达式。只需使用文字字符串替换:
gsub("/","/01/", df$a, fixed=TRUE)
只需用/
子字符串替换所有/01/
个符号。
如果您必须确保只更改属于2-digits/4-digits
模式的字符串,请使用
gsub("^(\\d{2})/(\\d{4})$", "\\1/01/\\2", df$a)
模式匹配:
^
- 字符串开头(\\d{2})
- 捕获第2组匹配2位数/
- 文字/
(\\d{4})
- 捕获匹配4位数的组#2 $
- 字符串结束。替换模式包含\\1
,对第1组捕获值的反向引用,/01/
作为文字子字符串和\\2
反向引用(即捕获到第2组中的值)。
> a = c("01/2009","03/2006","","12/2003")
> b = c("03/2016","05/2010","07/2011","")
> df = data.frame(a,b)
> gsub("/","/01/", df$a, fixed=TRUE)
[1] "01/01/2009" "03/01/2006" "" "12/01/2003"
> gsub("^(\\d{2})/(\\d{4})$", "\\1/01/\\2", df$a)
[1] "01/01/2009" "03/01/2006" "" "12/01/2003"