Rのタイムスタンプでタイムゾーンを処理する方法は? [閉鎖]

Rのタイムスタンプでタイムゾーンを処理する方法は? [閉鎖]

私が提供した非UTCタイムゾーン時間は、スウェーデンのタイムゾーン(UTC + 1)である2016年8月17日21:41です。各項目には2つの録音があります。 CSVファイルに素敵に書き込む方法を考えています。最初は手動でUnixタイムスタンプに変換しようとしましたが、その後、タイムゾーンの170820162141別の列を使用して元のタイムゾーンなどを維持することを考え始めました。しかし、私はまだこれらのバージョンが標準だとは思わない。私はスレッドに基づいてUnixタイムスタンプを生成する方法を知っています。Unixタイムスタンプを生成する方法は?次のコマンド構造もここで機能します。

% https://stackoverflow.com/a/2764285/54964
date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

R// Bash/ .... を使用して、Zsh私の提案に従ってCSVファイルを読みます。

  • カスタムタイムスタンプなどの電子(例:170820162141秒なし)
  • タイムゾーンなどの別の列です。UTC+1

CSVファイルの例

Time_start, Time_end, Time_start_timezone
170820162141, 180820160901, UTC+1

テスト関数擬似コード

Count time difference between two custom timestamps.  

thrig反復提案

データを次に変更しました。

  1. にタイムゾーン+0100(UTC + 1)を追加します, , , 03012011-2011+0100, 03022011-2011+0100
  2. strptime(from,format="%d%m%Y-%H%M%z私が追加したタイムゾーンの形式を指定します%z
  3. dataそのデータのタイムゾーンが正しく設定されていると、印刷は常に正しく表示されます。

コードは5つのデータ列で実行され、Rscript script.r最後の2つの列には時間データが含まれています。

library('methods')
# https://unix.stackexchange.com/a/363290/16920
setClass('iso8601')

#03012011-2011
setAs("character","iso8601",function(from) strptime(from,format="%d%m%Y-%H%M%z"))
data <- read.csv("/home/masi/Documents/Data/log.csv", colClasses=c(NA, NA, NA, "iso8601","iso8601"), header=TRUE) # my particular case

data

出力:完璧です!タイムゾーンが頻繁に変わるため、データに合わせてタイムゾーンを正しく調整する必要があります。

  • いいえlibrary('methods')、あなたは知っていますRscript Error: could not find function "setClass"

ベストアンサー1

ISO 8601は可能な形式の1つです。タイムゾーンオフセットを含めることができ、strptime複数の言語で解析できます。

$ cat x
2017-05-05T18:25:28+0100,2017-05-05T18:33:22+0100,foo
2017-05-05T18:34:21+0100,2017-05-05T18:38:52+0100,bar
$ R -q --silent --no-save
> R.version.string
[1] "R version 3.4.0 (2017-04-21)"
> setClass('iso8601')
> setAs("character","iso8601",function(from) strptime(from,format="%Y-%m-%dT%H:%M:%S%z"))
> data=read.csv("x",colClasses=c("iso8601","iso8601",NA),header=FALSE)
> data
                   V1                  V2  V3
1 2017-05-05 17:25:28 2017-05-05 17:33:22 foo
2 2017-05-05 17:34:21 2017-05-05 17:38:52 bar
> 

dateISO 8601形式で日付が生成されるのを待ちます。

$ date "+%Y-%m-%dT%H:%M:%S%z"
2017-05-05T19:20:58+0000
$ TZ=US/Pacific date "+%Y-%m-%dT%H:%M:%S%z"
2017-05-05T12:21:10-0700
$ 

おすすめ記事