我有一个带有日期的字符向量,以这种方式格式化(这只是一个例子):
x <- c("03.04.30", "02.06.32", "01.11.33", "10.10.31")
等等。我正在使用as.Date
函数:
x <- as.Date(x, format = "%d.%m.%Y")
并且它在工作,但它在2000年代为我带来了多年,而不是像我想的那样在20世纪90年代。
我的想法是简单地使用x
将.19
的每个元素中的句点的第三个实例替换为gsub
,但我无法提出正则表达式来执行此操作,而且我和#39;在网上看了整个地方,真的无法弄清楚这一点。
我还尝试使用substr
函数将x
的每个元素的第6个字符替换为.19
,但它只是替换整个字符串。能够有效地完成其中任何一项都会对我有所帮助!
我知道我可能会忽略一个更简单的解决方案,但请帮助我,我要拔掉头发试图解决这个问题。
答案 0 :(得分:2)
你可以这样做:
x <- c("03.04.30", "02.06.32", "01.11.33", "10.10.31")
x <- gsub("(\\d{2})$", "19\\1", x)
as.Date(x, format = "%d.%m.%Y")
获得:
[1] "1930-04-03" "1932-06-02" "1933-11-01" "1931-10-10"
这假定数据的格式一致,否则您可能需要重新考虑正则表达式。
答案 1 :(得分:0)
尝试以下正则表达式。
x2 <- sub("\\.(\\d{2})$", ".19\\1", x)
x2
#[1] "03.04.1930" "02.06.1932" "01.11.1933" "10.10.1931"
as.Date(x2, format = "%d.%m.%Y")
#[1] "1930-04-03" "1932-06-02" "1933-11-01" "1931-10-10"