我需要从保存在数字类型中的数字中获取最后两位数字并将其另外保存在变量中,例如:a = 1945它需要最后两位数并将其放在b b = 45中
如果您在使用多年,可能是最好的(我用这个东西)的sprintf联合%%,这将数字转换为字符串,但将保留1905作为05代替的5(可能是最好根据您的应用程序):
sprintf('%02d', 1999:2010 %% 100)
# [1] "99" "00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10"
Run Code Online (Sandbox Code Playgroud)
回过头来补充说,在正确利用基础R中的日期/时间实用程序的意义上,或许更"适当"的方法可能是先转换为a Date然后使用format:
format(.Date(365.25 * (1999:2010 - 1969.75)), '%y')
# [1] "99" "00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10"
Run Code Online (Sandbox Code Playgroud)
在1969.75重新中心在1970年左右的年(见.Date(0L)),但我们需要重新再中心这个占闰年.
然而,即便如此,由于闰年,大约400年(或者可能多达1600年)才会正确......对于如此广泛的日期,Dates的前进方向是:
format(as.Date(sprintf('%d-01-01', 1999:2010)), '%y')
Run Code Online (Sandbox Code Playgroud)