2016-05-06 11 views
0

Excelからデータをインポートしていて、Rで日付と時刻を操作しようとしていますが、それは私にそのようなHEADACHEを与えています。 Excelファイルでは、1つの列に日付と時刻が含まれ、別の列には同じ日に異なる時刻が含まれていました。 R内のデータは、基本的に、この例のようになります。RでのPOSIXctと数値の相互変換

mydata <- data.frame(DateTime1 = as.POSIXct(c("2014-12-13 04:56:00", 
             "2014-12-13 09:30:00", 
             "2014-12-13 11:30:00", 
             "2014-12-13 13:30:00"), 
             origin = "1970-01-01", tz = "GMT"), 
         Time2 = c(0.209, 0.209, 0.715, 0.715)) 

私は日付と2回目とPOSIXct形式で新しい列を持っているしたいのですが、私はそれを動作させることはできません。私は試しました:

mydata$DateTime2 <- as.POSIXct(as.numeric(as.Date(mydata$DateTime1) 
          + mydata$Time2), origin = "1970-01-01", 
          tz = "GMT") 

しかし、それは私に日付と時刻を1/1/1970に近づけます。

これは、より複雑ですが、私も試した他の似状況で働いている一つのことは、次のとおりです。

library(lubridate) 
mydata$DateTime2 <- ymd_hms(format(as.POSIXct(as.Date(mydata$DateTime1) + 
               mydata$Time2, 
         origin = "1899-12-30", tz = "GMT"))) 

が、それは私に8時間でオフになっている日付と時刻を提供します。その時間差は、私が太平洋標準時にいるので問題がタイムゾーンだと思うようになりますが、を入力データと変換しようとする時にGMTに設定します!何がありますか?私は、夏時間の合併症のためにすべてに8時間を追加することを躊躇しています。

私がここにリストアップしている両方の試みは、相互変換に問題があるようです。つまり、POSIXctオブジェクトで始まり、数値に変換してPOSIXctに変換し直すと、あなたが始めたところでではありません。同様に、タイムゾーンがGMTで始まり、タイムゾーンがGMTに設定されているものを追加すると、不思議なことにシステムタイムゾーンに変換されたものには問題はないはずです。

アドバイス?私はここにクリス・ホルブルックの回答に基づいて回答見つかっ

+0

変換前と変換後に 'unclass(DateTime1)'を調べてください。前後の同じ整数(技術的には数値)でなければなりません。そうだとすれば、正しいタイムゾーン/原点を設定するだけです。 – MichaelChirico

+0

提案していただきありがとうございますが、 'unclass(...'を含めないでください)との違いはありません – LauraS

+0

私は誤解されるかもしれませんが、 'Time2'を' DateTime1 '' Time2'の単位については分かりませんが、説明のための日だとしましょう。 '' mydata $ DateTime2 = mydata $ DateTime1 + mydata $ Time2 * 24 * 60 * 60'(POSIXctは私たちは 'Time2'を秒に変換します)。 – eipi10

答えて

0

How do you convert dates/times from one time zone to another in R?

をこれが働いた:

mydata$DateTime2 <- as.POSIXct(as.Date(mydata$DateTime1) + 
           mydata$Time2) 
attributes(mydata$DateTime2)$tzone <- "GMT" 

を@MichaelChiricoと私はタイムゾーンが問題だったこと正しかったです。私はまだ理由はわかりませんが、DateTime2のタイムゾーンは明らかにPSTでした。私がstr(mydata$DateTime2)をチェックしたときにリスト "PST"をしなかったのですが、時間差に基づいて、属性を設定するまで、実際にはPSTであったに違いありません。クレイジー。それはDateTime1がGMTであったとしてもそうしました。

関連する問題