web-dev-qa-db-ja.com

Unixタイムスタンプを日時に変換する

次のデータフレームがあります

> head(try)
     creates       time
1  128.29508 1417392072
3  236.98361 1417392072
7   98.45902 1417392072
9  157.44068 1417392131
10 227.38333 1417392131
11 242.03390 1417392131

> str(try)
'data.frame':   102968 obs. of  2 variables:
 $ creates: num  128.3 237 98.5 157.4 227.4 ...
 $ time   : Factor w/ 26418 levels "1417392071","1417392072",..: 2 2 2 3 3 3 3 3 5 5 ...

私が試した以下の方法を使用してUNIXタイムスタンプを日時に変換できません

> head(as.POSIXlt(as.numeric(try$time),Origin="1970-01-01",tz="GMT"))
[1] "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:03 UTC" "1970-01-01 00:00:03 UTC"
[6] "1970-01-01 00:00:03 UTC"

> head(as.POSIXct(as.character(try$time),tz="GMT"))

As.POSIXlt.character(x、tz、...)のエラー:文字列は標準の明確な形式ではありません

> head(as.POSIXlt(as.POSIXct(as.vector(as.numeric(try$time)),Origin="1970-01-01")))
[1] "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:02 UTC" "1970-01-01 00:00:03 UTC" "1970-01-01 00:00:03 UTC"
[6] "1970-01-01 00:00:03 UTC"

ここで私が間違っていることはわかりません。

9
user3006691

As.POSIXctを使用する前に、FactorからCharacter To Numberに変換する必要があります。関数はUnixtimeとして整数を期待しています

head(as.POSIXct(as.numeric(as.character(try$time)),Origin="1970-01-01",tz="GMT"))
11
Emer

これは、エポックが数値ではないためです。数値に変換してみてください。驚異のように機能します。

try$time <- as.POSIXct(as.numeric(try$time), Origin = '1970-01-01', tz = 'GMT')
2
Kushal Shah

試す

head(as.POSIXct(as.integer(as.numeric(as.character(try$time)) / 1000.0), 
Origin='1970-01-01', tz="GMT"))