2017-05-05 82 views
3

我創造了一些隨機數字:作爲新列添加posixlt到數據幀

data <- matrix(runif(10, 0, 1), ncol = 2) 
dataframe <- data.frame(data) 

> dataframe 
     X1   X2 
1 0.7981783 0.13233858 
2 0.9592338 0.05512942 
3 0.1812384 0.74571334 
4 0.1447498 0.96656930 
5 0.1735390 0.37345575 

,我想創建一個相應的時間戳列並綁定該上述數據幀。

time <- as.POSIXlt(runif(10, 0, 60), origin = "2017-05-05 10:00:00") 

這創建了10個值。現在

> time 
[1] "2017-05-05 13:00:27 EEST" "2017-05-05 13:00:02 EEST" "2017-05-05 13:00:26 EEST" "2017-05-05 13:00:25 EEST" "2017-05-05 13:00:28 EEST" 
[6] "2017-05-05 13:00:17 EEST" "2017-05-05 13:00:35 EEST" "2017-05-05 13:00:08 EEST" "2017-05-05 13:00:29 EEST" "2017-05-05 13:00:32 EEST" 

,我想將其綁定到數據幀,所以我想首先要使它成爲一個矩陣:

time <- matrix(time, nrow = 5, ncol = 2) 

,但是這給了我:

Warning message: 
In matrix(time, nrow = 5, ncol = 2) : 
    data length [11] is not a sub-multiple or multiple of the number of rows [5] 
+0

使用中發現的整數存儲值'as.POSIXct'而不是'lt' – akrun

+0

@akrun:你是對的!謝謝!有沒有辦法保存日期時間格式呢?因爲convert矩陣顯示秒。 – George

+0

更新了帖子 – akrun

回答

2

的原因是POSIXlt將日期時間存儲爲屬性的list,而POSIXct則不存在。所以,最好是使用as.POSIXct

time <- as.POSIXct(runif(10, 0, 60), origin = "2017-05-05 10:00:00") 

如果我們需要存儲,它可以爲data.frame

data.frame(date1= time[1:5], date2 = time[6:10]) 

list完成而無需爲「日期時間」被裹挾integer存儲轉換爲matrix模式時轉換爲matrix


假設,我們繼續與POSIXlt,然後我們發現屬性

time1 <- as.POSIXlt(runif(10, 0, 60), origin = "2017-05-05 10:00:00") 
unclass(time1) 
#$sec 
# [1] 13.424695 40.860449 57.756890 59.072140 24.425521 39.429729 58.309546 
# [8] 6.294982 46.613436 25.444415 

#$min 
# [1] 30 30 30 30 30 30 30 30 30 30 

#$hour 
# [1] 15 15 15 15 15 15 15 15 15 15 

#$mday 
# [1] 5 5 5 5 5 5 5 5 5 5 

#$mon 
# [1] 4 4 4 4 4 4 4 4 4 4 

#$year 
# [1] 117 117 117 117 117 117 117 117 117 117 

#$wday 
# [1] 5 5 5 5 5 5 5 5 5 5 

#$yday 
# [1] 124 124 124 124 124 124 124 124 124 124 

#$isdst 
# [1] 0 0 0 0 0 0 0 0 0 0 

#$zone 
# [1] "IST" "IST" "IST" "IST" "IST" "IST" "IST" "IST" "IST" "IST" 

#$gmtoff 
# [1] 19800 19800 19800 19800 19800 19800 19800 19800 19800 19800 

#attr(,"tzone") 
#[1] "" "IST" "IST" 

隨着POSIXctlist,它是一個可以通過unclass

unclass(time) 
#[1] 1493978445 1493978451 1493978432 1493978402 1493978447 1493978441 
#[7] 1493978445 1493978450 1493978419 1493978425 
#attr(,"tzone") 
#[1] ""