R 在字符串日期中插入前缀19
我有一个以字符串形式表示的出生日期向量,格式为“1985年2月10日” 当我在R 在字符串日期中插入前缀19,r,regex,date,R,Regex,Date,我有一个以字符串形式表示的出生日期向量,格式为“1985年2月10日” 当我在R中使用as.Date()函数时,它假定两位数的年份在2000年之后(这些出生日期都不在2000年之后) 例如: 截止日期(x=“52年2月10日”,格式=“%d-%b-%y”) 返回:2052-02-10 我不精通正则表达式,但是 我认为这是正则表达式在第二个“-”之后或最后两个数字之前插入“19”的机会 我发现了一个向前计数三个字符并插入一个字母的正则表达式: gsub(pattern=“^(.{3})(.*)$”
R
中使用as.Date()
函数时,它假定两位数的年份在2000年之后(这些出生日期都不在2000年之后)
例如:
截止日期(x=“52年2月10日”,格式=“%d-%b-%y”)
返回:2052-02-10
我不精通正则表达式,但是
我认为这是正则表达式在第二个“-”之后或最后两个数字之前插入“19”的机会
我发现了一个向前计数三个字符并插入一个字母的正则表达式:
gsub(pattern=“^(.{3})(.*)$”,replacement=“\\1d\\2”,x=“abcefg”)
但我不知道如何从最后数到两
感谢您的帮助
在第二个“-”后或最后两位数前插入“19”
在最后两位数之前:
gsub(pattern = "-(\\d{2})$", replacement = "-19\\1", x = "10-Feb-52")
看。在这里,首先匹配-
,然后匹配字符串($
)末尾的2个数字((\\d{2})
),并将其捕获到组1中
在第二个-
之后:
gsub(pattern = "^((?:[^-]*-){2})", replacement = "\\119", x = "10-Feb-52")
看。这里,0+字符的2个序列(
{2}
),而不是-
([^-]*
)从字符串的开头(^
)匹配并捕获到组1中。替换包含一个反向引用,用于恢复替换结果中捕获的文本。来自?strtime
:在输入时,值00到68的前缀为20,值69到99的前缀为19–这是2004和2008 POSIX标准规定的行为,但他们也表示“预计在未来的版本中,从两位数年份推断出的默认世纪将发生变化”。@WiktorStribiżew,我对这些数据已经足够熟悉了。可能有一些是1800年代的,但我对此表示怀疑。你可以尝试一下lubridate(代码)lubridate
:lubridate::dmy(c(“85年2月10日”,“15年2月10日”)[1]“1985-02-10”“2015-02-10”
@UweBlock:这样你就可以添加19
或20
,并且它们都是在开头添加的,虽然任务是仅在第二个连字符后的最后两位数字处添加19
。此外,建议的重复源插入20
或19
,这不是此处所期望的。那么“2015年2月10日”呢?这不应该成为2015-02-10吗?@UweBlock:问OP,根据当前的问题,不应该。