我将数据集导入R中,其中一个变量是日期,但它显示为13位数字,如1269576000000。 如何将此号码更改为日期?我不确定格式应该是什么样的,但我猜这个数字还包含有关时间(小时,分钟,秒)的信息。 是否有任何代码可以在R?
中直接更改此变量的格式感谢。
答案 0 :(得分:7)
最常见的形式是从1970年1月1日起的秒数,至少是POSIX标准。与Simon0101不同,我认为您应该使用as.POSIXct
,因为您通常希望将这些结果粘贴在数据框中,并且POSIXlt对象会在该环境中混乱。然而,你显然在给出了毫秒的时间:
> as.POSIXct(1269576000000, origin="1970-01-01")
[1] "42201-04-06 17:00:00 PDT" # not a sensible result
> as.POSIXct(1269576000000/1000, origin="1970-01-01")
[1] "2010-03-26 05:00:00 PDT"
答案 1 :(得分:3)
您正在寻找as.POSIXlt
,它将数字数据类型转换为自原始日期以来经过的(可能)小数天数,这就是为什么知道哪个日期计为第1天很重要的原因(或有时是第0天!)通过生成数据的任何内容:
x <- 1269576000000
# Guessing at the origin
as.POSIXlt( x/1e3, tz="GMT", origin="1970-01-01")
[1] "2010-03-26 04:00:00 GMT"
要显示小数秒,请设置选项digits.secs
,即
options(digits.secs=3)
x <- 1269576000500
as.POSIXlt( x/1e3, tz="GMT", origin="1970-01-01")
[1] "2010-03-26 04:00:00.5 GMT"
可以轻松添加到数据框中(我不确定为什么@DWin认为这是一个问题):
x <- 1269576000000
x <- seq( x , by = 500 , length.out = 10 )
df <- data.frame( ID = 1:10 , Time = as.POSIXlt( x/1e3, tz="GMT", origin="1970-01-01") )
df
ID Time
1 1 2010-03-26 04:00:00.0
2 2 2010-03-26 04:00:00.5
3 3 2010-03-26 04:00:01.0
4 4 2010-03-26 04:00:01.5
5 5 2010-03-26 04:00:02.0
6 6 2010-03-26 04:00:02.5
7 7 2010-03-26 04:00:03.0
8 8 2010-03-26 04:00:03.5
9 9 2010-03-26 04:00:04.0
10 10 2010-03-26 04:00:04.5