从R中的数字获取最后两位数字

时间:2017-05-16 19:23:22

标签: r numeric digits

我需要从保存在数字类型中的数字中获取最后两位数字并将其另外保存在变量中,例如: A = 1945 它需要最后两位数字并将其放在b中 B = 45

5 个答案:

答案 0 :(得分:10)

您可以使用模数运算符%%

a <- 1945
b <- 1945 %% 100 
#b = 45 

答案 1 :(得分:7)

如果您使用年份,可能最好(以及我用于此目的)是sprintf%%结合使用,它会将数字转换为字符串,但会保留{{1} } 1905代替05(根据您的申请可能更好):

5

回过头来补充说,在正确利用基础R中的日期/时间实用程序的意义上,或许更“正确”的方法可能是先将{1}转换为sprintf('%02d', 1999:2010 %% 100) # [1] "99" "00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" ,然后再使用{{1} }:

Date

format重新集中了1970年左右的年份(见format(.Date(365.25 * (1999:2010 - 1969.75)), '%y') # [1] "99" "00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" ),但我们需要重新将其重新定位以解决闰年问题。

然而,即便如此,由于闰年,大约400年(或者可能多达1600年)只会是正确的......对于如此广泛的日期,1969.75 s的前进方向是:

.Date(0L)

答案 2 :(得分:2)

怎么样......

a <- 1945
b <- a - round(a, -2)
b
[1] 45

这假设当然没有小数。

这有保留标志的附带好处......

a <- -1945
b <- a - round(a, -2)
b
[1] -45

答案 3 :(得分:1)

您可以直接使用substr(),它可以检测numeric并将其转换为string。需要转换回数字。例如:

num = c(1112, 1113)
trim = as.numeric(substr(num, nchar(num[1])-1, nchar(num[1])))

答案 4 :(得分:0)

对于后代,这允许在小数点后尾随零。这也不需要计算字符串/数字的长度。

stringr具有str_sub函数,f_pad_right来自numform包。

这将从数字中获取最后一位数字:

> library(stringr)
> library(numform)
> str_sub(f_pad_right(as.character(1.20), pad.char = 0,width = 4), - 1, - 1)
[1] "0"

最后两位数字:

> str_sub(f_pad_right(as.character(1.20), pad.char = 0,width = 4), - 2, - 1)
[1] "20"

回答OP问题:

> str_sub(f_pad_right(as.character(1945), pad.char = 0,width = 4), - 2, - 1)
[1] "45"