Gsub 日期的第一个数字
Gsub the first to digits of a date
我想在我的数据集中将年份“1984”重塑为“84”。我只想删除第一个数字 ('19') 和 ('20') 所以只保留最后两个数字。
我试过以下方法:
gsub('19+', '', year)
gsub('20+', '', year)
这些代码也完全删除了 1919 年或 2020 年,但这不是我们的想法。
使用 gsub 时我可以尝试什么代码?
使用 19+
将匹配 1 后跟 1 次或多次 9。使用 20+
将匹配 2 后跟 1 次或多次 0。当 gsub 替换字符串的所有匹配项时,您将同时匹配 1919 和 2020,因为它还会匹配例如 19999919 或 200.
您可以使用模式来匹配 19 或 20 并捕获捕获组中的最后 2 位数字。
在替换中使用使用 \1
的第一个捕获组,并在模式周围使用单词边界 \b
以防止数字成为较大字符串的一部分。
gsub('\b(?:19|20)(\d\d)\b', '\1', "1984")
输出
[1] "84"
更广泛的匹配可以匹配开头的 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)
我想在我的数据集中将年份“1984”重塑为“84”。我只想删除第一个数字 ('19') 和 ('20') 所以只保留最后两个数字。
我试过以下方法:
gsub('19+', '', year)
gsub('20+', '', year)
这些代码也完全删除了 1919 年或 2020 年,但这不是我们的想法。
使用 gsub 时我可以尝试什么代码?
使用 19+
将匹配 1 后跟 1 次或多次 9。使用 20+
将匹配 2 后跟 1 次或多次 0。当 gsub 替换字符串的所有匹配项时,您将同时匹配 1919 和 2020,因为它还会匹配例如 19999919 或 200.
您可以使用模式来匹配 19 或 20 并捕获捕获组中的最后 2 位数字。
在替换中使用使用 \1
的第一个捕获组,并在模式周围使用单词边界 \b
以防止数字成为较大字符串的一部分。
gsub('\b(?:19|20)(\d\d)\b', '\1', "1984")
输出
[1] "84"
更广泛的匹配可以匹配开头的 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)