0

データセットを R にインポートしましたが、変数の 1 つが日付ですが、1269576000000 などの 13 桁の数字として表示されています。この数字を日付に変更するにはどうすればよいですか? 形式がどうあるべきかはわかりませんが、この数値には時間に関する情報 (時、分、秒) も含まれていると思います。Rでこの変数の形式を直接変更するコードはありますか?

ありがとう。

4

2 に答える 2

8

最も一般的な形式は、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"

したがって、それは端数の日数でも秒数でもなく、原点からのミリ秒数です。

于 2013-04-23T23:31:00.413 に答える
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
于 2013-04-23T23:22:23.063 に答える