2016-11-22 7 views
0

Rには2つの文字列を持つDFがあります。最初の列は時系列配列で、2番目の列は連続する数値を含みます。時系列フィールドには、ミリ秒単位で記録された時間があります。私はこの配列を日付配列に変換しようとしています。しかし、私が同じものを変換するために使用するどの方法でも、私はミリ秒の情報を失います。私はミリ秒の情報を保持したいと思いますミリ秒を含むcharベクトルのフォーマットをtimeseriesベクトルに変更するにはR

time = c("08-08-2016 09:16:33.430","08-08-2016 09:16:37.930") 
values <- c(45,21) 
my_data <- data.frame(time,values) 

以下は、データフレームです。しかし、次のメソッドを使用してtime char配列を変換すると、ミリ秒(O/P時間配列= 2016-08-08 09:16:33,08-08-2016 09:16:37)が失われます。

my_data$time=strptime(my_data$time,format="%m-%d-%Y %H:%M:%S.%OS") 

as.POSIXct、as.Date関数を使用してみましたが解決できませんでした。誰かが助けてくれますか?

答えて

1

anytimeはあなたからの追加入力で自動的にこれを解析できるように、標準-十分な形式になります。

R> timevec <- c("08-08-2016 09:16:33.430","08-08-2016 09:16:37.930") 
R> anytime(timevec) 
[1] "2016-08-08 09:16:33.43 CDT" "2016-08-08 09:16:37.93 CDT" 
R> 

私は、ディスプレイにも小数秒を示した理由は、デフォルトでoptions(digits.secs=6)セットを持っている傾向があります。

+0

オプション(digits.secs = 6)は、トリックでした。それが解決した。ありがとうございました。 –

2

%OS%Sの代わりに、それに加えてではありません。 "%m-%d-%Y %H:%M:%OS"は、必要な書式文字列です。

options(digits.secs=6) 
as.POSIXct(my_data$time, format="%m-%d-%Y %H:%M:%OS") 
#[1] "2016-08-08 09:16:33.43 AEST" "2016-08-08 09:16:37.93 AEST" 
関連する問題