Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R将整数改为三个整数_R - Fatal编程技术网

R将整数改为三个整数

R将整数改为三个整数,r,R,我有这个号码 20101213这是该数据的表示形式2010年12月13日我想从该数字中提取年、月和日的数字。所以我应该有三个变量包含这些值 我所尝试的: 结果是[1]2 0 1 0 1 0 1 0 但我不知道如何继续,请您帮助我year您可能希望将其转换为日期-时间格式,以便将来进行计算,那么: year <- as.numeric(substr(as.character(value),start = 1,stop = 4)) month <- as.numeric(substr(a

我有这个号码

20101213
这是该数据的表示形式
2010年12月13日
我想从该数字中提取年、月和日的数字。所以我应该有三个变量包含这些值

我所尝试的: 结果是
[1]2 0 1 0 1 0 1 0


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

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

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))
(x <- strptime(20101213, "%Y%m%d"))
# [1] "2010-12-13 EST"
此外,您还可以轻松提取年份、月号和月日号:

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

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

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

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

我试着测试你的代码,效果很好。然而,当我输入非数据值,如
20101313
时,我得到了
NA
。我将在另一个代码中编写该代码,那么如果(您的代码==NA),有没有办法做到这一点?请告诉我,“PaulrLangon每年的哪一天是13-13-2010?”@ PaoloRLang,我实际上认为这是一个识别非法日期的特性(它可以免除你自己实现这一逻辑)。如果代码< >(是(NA)(x))< /代码>,然后你可以做任何你认为合适的失踪日期。我不知道13号有什么价值month@PaoloRLang输入非法日期时,您希望看到什么?使用
子字符串(20101213,c(1,5,7),c(4,6,8))
。写得太多了,说得好!由于OP似乎不知道substr(),我认为一个详细的方法是合适的。他确实要求三个变量:)Np。对变量使用
assign
<代码>y
as.numeric(c(format(x, "%Y"), format(x, "%m"), format(x, "%d")))
# [1] 2010   12   13
# using mod
year  = floor(value/10000)
month = floor((value %% 10000)/100)
day = value %% 100