2016-12-12 15 views
1

私はRで働いています。私のデータセットには時間(hh:mm:ss)の列があります。列は要因としてリストされます。Rの数値と突然変異への時刻変換

最終的に、私はこの列の値の間でdiff()を得ることができます(つまり、同じ列のtime1とtime2の違い)。私は要因でそれをすることはできません。

時間を同じ列内の時間差を計算するための別の形式に変換するにはどうすればよいですか? 本当にありがとうございます!

+1

を。 – CephBirk

+0

'times'関数を' chron'パッケージから試してみてください。すでにインストールしているはずです。 –

+0

次のような場合は、test < - hms(my_df $ time、quiet = FALSE、roll = FALSE)とすると時間、分、秒の時間が得られます。 difftime()は、lubridateの関数ではありません。あなたは別の関数を意味しましたか? ..... 2つ目のコメントは、クロノパッケージの詳細で「時間」機能を見つけることができません....ありがとう! – Katie

答えて

-1

あなたが提案したもの取っ:

x <- factor(c("12:34:56", "12:35:45", "12:48:00")) 
y <- factor(c("12:42:56", "13:22:41", "17:11:21")) 

## convert to time 
x <- strptime(x, format = "%H:%M:%S") 
y <- strptime(y, format = "%H:%M:%S") 

## now you want a vector of differences 
difftime(y,x, units="hours") 
Time differences in hours 
[1] 0.1333333 0.7822222 4.3891667 

編集:私はあなたの質問を読み違えています。差異の1列内にあります。 fencepost problemで終わることに注意してください。出力には列よりも行が少なくなるからです。

diff.difftime(x) 
Time differences in seconds 
[1] 49 735 
+0

こんにちは、ありがとうございます。このコードを使用した後(私は成功したと思った)、hms()を使って時間が変わることを認識しています。たとえば、hms()でデータを実行する前にデータ$ $を取り込んだ場合、最初に返される時刻は08:08:48.63です。 hms()でSAMEベクトルを実行すると、11H 18M 48.63Sが返されます。文字をある期間に変更すると、何らかの形で時間が変わるのでしょうか?どんな助けや助けも大歓迎です! – Katie

0

を試してみて、このコードを試してください:あなたは `lubridate`、その後` difftime() ``からHMSを() `を使用することができます

library(lubridate) 
library(dplyr) 

id <- c(1,2,3,4) 
time1 <- hms(factor(c("09:00:01","04:02:50","10:30:21","11:15:25"))) 
time2 <- hms(factor(c("00:00:01","01:02:00","09:30:11","14:15:25"))) 

df<-data.frame(id, time1, time2) 

df %>% 
group_by(id) %>% 
summarize(t_diff = time1 - time2) 

    t_diff 
1 9H 0M 0S 
2 3H 0M 50S 
3 1H 0M 10S 
4 -3H 0M 0S