2014-09-21 39 views
0

當我運行:爲什麼R data.frame的顯示日期不?

time <- as.Date("2014-02-01") 
#time <- as.Date("01.02.2014") 
time # just checking... 
df <- data.frame(Time = date()) 
df <- cbind(Time = as.Date(time)) 
df 

[1,] 16102 

我如何獲得一個data.frame持有並返回一個「日期」對象?

感謝您的提前!羅伯特

回答

1

我不明白你在試圖讓你的榜樣是什麼,但是這應該這樣做:

time <- as.Date("2014-02-01") 
df <- data.frame(time = time) 
class(df$time) 

[1] "Date" 

編輯:

如果你想一個新行添加到所有你需要做的一個數據幀是使用$指數的新變量:

time2 <- as.Date("2014-09-18") 
df$newtime <- time2 
str(df) 

'data.frame': 1 obs. of 2 variables: 
$ time : Date, format: "2014-02-01" 
$ newtime: Date, format: "2014-09-18" 
+0

我想添加一行到data.frame。在完成一些日期和時間計算後,我想從csv文件解析一行數據並將其放入data.frame中。 – user1481614 2014-09-21 13:58:39

+0

我編輯了這個問題的答案。 – sebpardo 2014-09-21 17:15:56

+1

@ user1481614 - 你應該在第一個問題中說明這一點。現在編輯您的問題使其他答案無效,我將不會收到您的編輯通知。 – 2014-09-21 18:13:12

2

簡短的回答是

您的第一個數據框的確在第一列中返回一個日期對象。

> (df <- data.frame(Date = Sys.Date())) 
#   Date 
# 1 2014-09-20 
> class(df) 
# [1] "data.frame" 
> class(df$Date) 
# [1] "Date" 

但是你的第二個df(我稱之爲cb)是不是一個數據幀,這是一個矩陣(見?cbind)。矩陣在每列中只能有數字或字符元素。日期對象以數字值存儲,因此當您使用cbind時,日期被強制爲其存儲值。

> mode(Sys.Date()) 
# [1] "numeric" 
> (cb <- cbind(Date = Sys.Date())) 
#  Date 
# [1,] 16333 
> class(cb) 
# [1] "matrix" 
> identical(c(cb), as.numeric(Sys.Date())) 
# [1] TRUE 

,使它看起來像一個日期,當你調用cbind,您可以使用as.character。它會被強制變形,但它看起來像一個日期。

> (cb2 <- cbind(Date = as.character(Sys.Date()))) 
#  Date   
# [1,] "2014-09-20" 
> class(cb2) 
# [1] "matrix" 
> identical(c(cb2), as.character(Sys.Date())) 
# [1] TRUE 
+0

謝謝!我對R相對比較陌生(正如你所看到的)。在你看來,如果我想從一個csv文件中解析出一行數據(財務 - 數字,日期時間),並在完成一些日期和時間計算後將其放入表格存儲中,那麼最好還是數據框架或矩陣? – user1481614 2014-09-21 14:02:20

+0

時間,開放,高,低,關閉,卷 01.01.2014 00:00:00.000,1205.393,1205.393,1205.393,1205.393,0.0000 – user1481614 2014-09-21 14:05:38

+0

@ user1481614如果您使用日期,我建議您使用數據框。您將減少日期時間格式 – 2014-09-21 14:40:04

相關問題