2017-09-22 2 views
2

이것은 아마도 R에 익숙하지 않고 답을 찾을 수없는 (또는 잘못된 것을 검색하고있었습니다) 간단한 질문 일 것입니다. 현재 5 분 미만의 시간 값을 모두 삭제하는 프로젝트가 진행 중입니다. 데이터의 예는 "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

관련 문제