6

私は UCI の「個人アクティビティ データ セットのローカリゼーション データ」データセットに取り組んでおり、このデータ セットには、次の形式の日付と時刻の列 (両方とも 1 つの列) があります。

27.05.2009 14:03:25:777
27.05.2009 14:03:25:183
27.05.2009 14:03:25:210
27.05.2009 14:03:25:237
...

Rを使用してこの列をタイムスタンプに変換する方法があるかどうか疑問に思っています.

4

1 に答える 1

13

まず、ミリ秒と秒を区切るコロンをドットに置き換える必要があります。そうしないと、最後のステップが機能しません (これについてはDirk Eddelbuettelに感謝します)。最終的に R は必要なセパレーターを使用するので、より迅速にするために、すべてのコロンをドットに置き換えます。

x <- "27.05.2009 14:03:25:777"  # this is a simplified version of your data
y <- gsub(":", ".", x)          # this is your vector with the aforementioned substitution

ところで、これはあなたのベクトルがどのように見えるべきかですgsub:

> y
[1] "27.05.2009 14.03.25.777"

ここで、ミリ秒を表示するには、最初に R オプションを調整してからstrptime、日付ベクトルを POSIXlt (R に適した) 形式に変換する という関数を使用する必要があります。次の手順を実行してください。

> options(digits.secs = 3)           # this tells R you want it to consider 3 digits for seconds.
> strptime(y, "%d.%m.%Y %H:%M:%OS")  # this finally formats your vector
[1] "2009-05-27 14:03:25.777"

ここでこの素晴らしいトリックを学びました。この他の回答では、設定をスキップしてoptions、たとえば を使用できるとも書かれていますが、私にはうまくいきstrptime(y, "%d.%m.%Y %H:%M:%OS3")ません。Henrikは、関数のヘルプ ページに、?strptime%OS3このビットは OS 依存であると記載されていると述べています。更新された Ubuntu 13.04 を使用し、%OS3yieldsを使用していますNA

strptime(または などの他の POSIX 関連関数) を使用する場合as.Dateは、使用される最も一般的な変換のいくつかに注意してください ( DWinによって提案されているように、簡潔にするために編集されています。完全なリストは にありますstrptime)。

  • %a現在のロケールでの省略された曜日名。
  • %A現在のロケールでの完全な曜日名。
  • %b現在のロケールでの月の省略名。
  • %B現在のロケールでの完全な月名。
  • %d10 進数 (01 から 31) としての月の日。
  • %H10 進数の時間 (00 ~ 23)。24:00:00 などの時刻を入力できます。
  • %I10 進数の時間 (01 ~ 12)。
  • %j10 進数 (001 から 366) としての年間通算日。
  • %m10 進数 (01 ~ 12) としての月。
  • %M10 進数としての分 (00 ~ 59)。
  • %pロケールの AM/PM インジケータ。と一緒に使用し、 と一緒に使用し%Iない%H
  • `%S 10 進数 (00–61) としての秒。最大 2 つのうるう秒を使用できます (ただし、POSIX 準拠の実装ではうるう秒は無視されます)。
  • %U日曜日を週の最初の日として使用する 10 進数 (00 から 53) としての年の週 (通常、年の最初の日曜日を週 1 の最初の日として使用)。米国大会。
  • %w10 進数の平日 (0 ~ 6、日曜日は 0)。
  • %W月曜日を週の最初の曜日として使用する 10 進数 (00 ~ 53) としての年の週 (通常は、年の最初の月曜日を第 1 週の 1 日として使用)。英国大会。
  • %y世紀なしの年 (00 ~ 99)。入力時に、値 00 から 68 には 20 が、69 から 99 には 19 が前に付けられます。
  • %Y年と世紀。元のグレゴリオ暦にはゼロがありませんでしたが、ISO 8601:2004 では有効であると定義されています (1BC として解釈されます)。
于 2013-09-28T01:42:51.043 に答える