2016-10-27 1 views
-1
で、日付時刻に
structure(list(Datetime = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "2016-10-19 00:00:00", class = "factor")), .Names = "Datetime", row.names = c(NA, 
-6L), class = "data.frame") 

を変換することができない:私はこのようPOSIXctに日時を変換しようとすると、R

t$Datetime<-as.POSIXct(t$Datetime, format="%Y-%m-%d %H:%M:%S") 

私は2番目のデータから時分を失います。これは次のようになります。

Datetime 
1 2016-10-19 
2 2016-10-19 
3 2016-10-19 
4 2016-10-19 
5 2016-10-19 
6 2016-10-19 

dput(t) 
structure(list(Datetime = structure(c(1476849600, 1476849600, 
1476849600, 1476849600, 1476849600, 1476849600), class = c("POSIXct", 
"POSIXt"), tzone = "")), .Names = "Datetime", row.names = c(NA, 
-6L), class = "data.frame") 

なぜデータから時間、分秒を紛失していますか?

+3

Matthew Lundbergは以前にその質問に答えたと思いました。あなたはそれを失うことはありませんでした、それは表示されていません。 – aichao

+0

@aichao、私は値を失うと思います。 – user1471980

+0

ドキュメントによると、「?DateTimeClasses'を参照してください。」クラス「POSIXct」は、数値ベクトルとして1970年の初め(UTCタイムゾーン内)からの(符号付き)秒数を表します。これは、最後の 'dput()'のかなり大きな整数値を表しています。 – aichao

答えて

-1

あなたはそれを紛失しているわけではなく、表示されていません(00:00:00は重要な時間を意味しないため)。時、分、秒の値を設定すると、それらが表示されます。

t <- structure(list(
    Datetime = structure(c(1L, 1L, 1L, 1L, 1L, 1L), 
    .Label = "2016-10-19 00:00:00", 
    class = "factor")), 
    .Names = "Datetime", 
    row.names = c(NA, -6L), 
    class = "data.frame") 

t$Datetime <- as.POSIXct(t$Datetime, format="%Y-%m-%d %H:%M:%S") 

head(t, 3) 
#    Datetime 
# 1 2016-10-19 01:01:01 
# 2 2016-10-19 01:01:01 
# 3 2016-10-19 01:01:01 

str(t) 
#'data.frame': 6 obs. of 1 variable: 
# $ Datetime: POSIXct, format: "2016-10-19 01:01:01" "2016-10-19 01:01:01" ... 

私は使いやすく、より少ないエラーが発生しやすくなり、日付を管理するためにlubridateパッケージを使用することをお勧め。次のコードは同じ結果を示します。

library(lubridate) 

t$Datetime <- ymd_hms(t$Datetime) 
関連する問題