1

タイムスタンプと関数を含むdf列を持つデータ フレームがあります。timefrom.timestamp

from.timestamp = function(timestamp) {
  return(as.POSIXlt(timestamp/1e3, origin="1970-01-01 00:00:00 GMT"))
}

タイムスタンプを日付型に変換します。すべてのタイムスタンプが日付に変換されるようにデータ フレームを変更するにはどうすればよいですか?

私のアプローチ

私は次のことを試しています:

df$time <- apply(as.array(df$time), MARGIN=1, FUN=from.timestamp)

の結果の列エントリはtime、日付のようには見えませんが、一連の数字です (例: 1.034, 59.000, 23.000, 7.000, 5.000, 113.000, 5.000, 157.000, 1.000.

dput(df)与えます:

structure(list(time = c(1370674741034, 1372671995085, 1370847555008, 1371456058556, 1372570911379, 1371937835807)), .Names = "time", row.names = 8831395:8831400, class = "data.frame")
4

1 に答える 1

2

やるだけ

df$time <- from.timestamp(df$time)

奇妙な動作が発生する理由は、POSIXltオブジェクトが実際にはリストであり、年、月、日などのコンポーネントがあるためです。コードでは、リストのシーケンスapplyから受信しfrom.timestamp、それを単一のリストに結合します。そうすることで、結果からクラス情報が取り除かれます。これが、奇数が表示された理由です。これらの奇数は、実際にはその日時を表す POSIXlt オブジェクトの個々のコンポーネントです: 秒、分、時、月日、月、年、曜日、年中日。

于 2013-08-01T02:36:46.610 に答える