R将整数更改为三个整数

时间:2015-05-21 22:30:01

标签: r

我有这个号码

20101213这是此数据的代表2010 Dec 13th我想从该数字中提取年,月和日数字。所以我应该有三个变量包含值。

我尝试过:

value = 20101213

as.numeric(strsplit(as.character(value), "")[[1]])

结果为[1] 2 0 1 0 1 0 1 0

但我不知道如何继续,请你帮助我

3 个答案:

答案 0 :(得分:5)

您可能希望将其转换为日期时间格式,以便将来进行计算,那么如何:

(x <- strptime(20101213, "%Y%m%d"))
# [1] "2010-12-13 EST"

这将使您能够进行年度,月份编号和日期编号无法进行的计算,例如抓取星期几(0 =星期日,1 =星期一,... 。)或一年中的某一天:

x$wday
# [1] 1
x$yday
# [1] 346

此外,您可以轻松提取年,月号和日期编号:

c(x$year+1900, x$mon+1, x$mday)
# [1] 2010   12   13

编辑:正如@thelatemail所指出的,不涉及记住偏移的替代方案是:

as.numeric(c(format(x, "%Y"), format(x, "%m"), format(x, "%d")))
# [1] 2010   12   13

答案 1 :(得分:1)

year <- as.numeric(substr(as.character(value),start = 1,stop = 4))
month <- as.numeric(substr(as.character(value),start = 5,stop = 6))
day <- as.numeric(substr(as.character(value),start = 7,stop = 8))

答案 2 :(得分:0)

如果您不想处理字符串表示,您也可以像这样使用mod函数:

# using mod
year  = floor(value/10000)
month = floor((value %% 10000)/100)
day = value %% 100

然后将按预期提取数字的相关部分。