19

私は R に時間のベクトル all_symbols$Time を持っており、時間を取得する (または情報を失うことなく時間を文字列に変換する) 方法を見つけようとしています。私が使う

strptime(all_symbol$Time[j], format="%H:%M:%S")

何らかの理由で日付が今日であると仮定して返されます

[1] 「2013-10-18 09:34:16」

R での日付と時刻の書式設定は非常に面倒です。あまりにも多くのパッケージを追加せずに時間を取得しようとしています (実際にはすべてです。ライブラリをインストールできない学校のコンピューターを使用しています)。

4

2 に答える 2

19

使用strptimeすると、必然的に日時オブジェクトが取得され、フォーマット文字列に日付がない場合のデフォルトの動作は、今日の日付と見なされます。それが気に入らない場合は、選択した日付の文字列を先頭に追加する必要があります。

@ジェームズの提案は、私が提案しようとしていたものと同等です:

format(all_symbol$Time[j], format="%H:%M:%S")

私が知っている唯一の時間クラス (日付値が関連付けられていない時刻) を持つパッケージは、package:chron です。ただし、POSIXt オブジェクトから文字値を出力する方法として format を使用すると、因子入力を必要とする関数に適していることがわかりました。

于 2013-10-18T23:49:47.243 に答える
2

最近同じ問題に遭遇し、これと他の投稿を見つけましたR: 日付のない時間を処理する方法? 刺激的です。同じような疑問を持っている人のために、少しでも貢献したいと思います。

R のみをベースにしたい場合は、 を利用as.Date(..., format = ("..."))して日付を標準形式に変換してください。substr次に、時間を抽出するために使用できます。例えばsubstr("2013-10-01 01:23:45 UTC", 12, 16)あなたに与えます01:23

package を使用できる場合lubridate、 のような関数mdy_hmsは生活をより簡単にします。そしてsubstr、ほとんどの場合動作します。

時間を比較したい場合は、それらが Date または POSIXt オブジェクトにある場合に機能するはずです。時間の部分だけが必要な場合は、数値に強制することができます (後で元に戻す必要がある場合があります)。たとえば、 as.numeric(hm("00:01"))00 :00: 6000 から 60 秒後という意味です。as.numeric(hm("23:59"))を与え86340ます。

于 2018-08-20T14:31:35.960 に答える