r-Gsub是日期的第一位到数字



我想在我的数据集中将1984年重塑为84年。我只想去掉第一个数字("19"(和("20"(,这样只剩下最后两个数字。

我试过以下几种:

gsub('19+', '', year)
gsub('20+', '', year)

这些代码也完全删除了1919年或2020年,但这不是想法。

使用gsub时可以尝试什么代码?

使用19+将匹配一个1,后跟一个或多个9。使用20+将匹配一个2,后跟一个或多个零的倍数。当gsub替换字符串的所有匹配项时,您将同时匹配1919和2020,例如19999919或200。


您可以使用一个模式来匹配19或20,并捕获捕获组中的最后2位数字。

在替换中,使用使用\1的第一捕获组,并在模式周围使用单词边界b,以防止数字成为较大字符串的一部分。

gsub('\b(?:19|20)(\d\d)\b', '\1', "1984")

输出

[1] "84"

R演示

更广泛的匹配可以是在开始时匹配2位数字,而不是19或20位。

gsub('\b\d{2}(\d{2})\b', '\1', "1984")

使用^作为字符串的开头。

gsub("^19|^20", "", year)
# [1] "19" "28" "37" "46" "55" "64" "73" "82" "91" "00" "09" "18"

或者使用substring

substring(year, 3)
# [1] "19" "28" "37" "46" "55" "64" "73" "82" "91" "00" "09" "18"

数据:

year <- seq(1919, 2021, 9)

最新更新