在保留句点的同时替换字符串中句点的第三个实例
Replace the third instance of a period in a character string while keeping the period
我有一个带日期的字符向量,格式如下(这只是一个例子):
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 年代对我来说是回归岁月,而不是我想要的 1990 年代。
我的想法是使用 gsub
简单地将 x
的每个元素中的第三个句点替换为 .19
,但我无法想出一个正则表达式来这样做我在网上到处都看了,真的想不通。
我也尝试过使用 substr
函数将 x
的每个元素的第 6 个字符替换为 .19
但它只是替换了整个字符串。能够有效地完成其中任何一项都会对我有所帮助!
我知道我可能忽略了一个更简单的解决方案,但请帮助我,我正在努力解决这个问题。
你可以这样做:
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"
这假定数据的格式一致,否则您可能需要重新考虑正则表达式。
试试下面的正则表达式。
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"
我有一个带日期的字符向量,格式如下(这只是一个例子):
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 年代对我来说是回归岁月,而不是我想要的 1990 年代。
我的想法是使用 gsub
简单地将 x
的每个元素中的第三个句点替换为 .19
,但我无法想出一个正则表达式来这样做我在网上到处都看了,真的想不通。
我也尝试过使用 substr
函数将 x
的每个元素的第 6 个字符替换为 .19
但它只是替换了整个字符串。能够有效地完成其中任何一项都会对我有所帮助!
我知道我可能忽略了一个更简单的解决方案,但请帮助我,我正在努力解决这个问题。
你可以这样做:
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"
这假定数据的格式一致,否则您可能需要重新考虑正则表达式。
试试下面的正则表达式。
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"