我有这个号码
20101213
这是此数据的代表2010 Dec 13th
我想从该数字中提取年,月和日数字。所以我应该有三个变量包含值。
value = 20101213
as.numeric(strsplit(as.character(value), "")[[1]])
结果为[1] 2 0 1 0 1 0 1 0
但我不知道如何继续,请你帮助我
答案 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
然后将按预期提取数字的相关部分。