2017-09-22 14 views
2

これはおそらく簡単な質問ですが、私はRには新しく、答えを見つけることができませんでした(または間違ったことを捜していました)。 私は現在、5分未満のすべてのTime値を削除するプロジェクトに取り組んでいます。データの例は、 "lubridate"パッケージを使用して作成された時間と次のとおりです。指定された値よりも常に少ない時間を削除

Time 
19S 
1M 24S 
7M 53S 
11M 6S 
. 
. 
. 

ここで、5分未満の値をすべて削除します。したがって、最終的なデータセットは次のとおりです。

Time 
7M 53S 
11M 6S 
. 
. 
. 

何か助けが素晴らしいだろう! ありがとう!

答えて

2

あなたが行うことができますと:

df <- df[df$time > ms('5:00'), ] 

結果:

> df 
    time value 
3 7M 53S  3 
4 11M 6S  4 

Strangly十分な、これはコードをdplyrに変換します。それは動作しません:

filter(df, time > ms('5:00')) 

結果:

time 
1 53S 
2 1M 6S 
Warning message: 
In format.data.frame(x, digits = digits, na.encode = FALSE) : 
    corrupt data frame: columns will be truncated or padded with NAs 

が、私はそれについて質問をし、答えhereを発見しました。あなたが良い解決策を得る:

df %>% 
    mutate(time = as.numeric(time)) %>% 
    filter(time > as.numeric(ms('5:00'))) %>% 
    mutate(time = ms(paste0(floor(time/60),':',round((time/60 - floor(time/60))*60)))) 

データ:

df <- data.frame(time = ms(c('0:19','1:24','7:53','11:6')), value = 1:4) 
+1

私は私の方法でエラーを発見したと私はちょうど私の以前のコメントを削除しました。あなたのコードは完璧です。ありがとうございました! :) – Fiona

0

はこれを試してみてください。..

> library(lubridate) 
> TimeData <- data.frame(Time = c("0M 19S", "1M 24S", "7M 53S", "11M 6S")) 
> TimeData$Time <- ms(TimeData$Time) 
> subset(TimeData, Time > "5M 00S") 
    Time 
3 7M 53S 
4 11M 6S 
+0

これは基本的に私が前に投稿したのと同じアプローチです。 – h3rm4n

+0

ありがとうございました:) – Fiona

関連する問題