我想在我的数据集中将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)