2017-11-29 4 views
0

다음은 내가 가지고있는 데이터 프레임의 예입니다. 데이터 프레임에는 다른 많은 열이 있고 데이터 유형은 주어진 열에 대해 "문자"입니다.R 하위 문자열에서 "NA"제거 R

Time 
NA, 2017-07-24 04:13:00 
2017-07-24 07:01:12 
NA, 2017-07-24 05:18:00 
2017-07-24 05:00:45, NA 
NA, 2017-07-24 19:44:30, NA 

나는 ("NA"와 시간 inbetween 공간) 모든 "NA", 쉼표와 공백을 제거하고 싶습니다. 따라서 내가 요구하는 결과는 다음과 같습니다.

Time 
2017-07-24 04:13:00 
2017-07-24 07:01:12 
2017-07-24 05:18:00 
2017-07-24 05:00:45 
2017-07-24 19:44:30 

미리 도움을 청하십시오!

답변

2

이 그것을 수행해야합니다

your_data$better_time = gsub(
    pattern = "NA, |, NA", 
    replacement = "", 
    x = your_data$Time) 

pattern = "NA, |, NA"NA, 또는 , NA 중 하나와 일치하는 정규 표현식입니다.

0

str_extract의 또 다른 옵션은 stringr입니다. 이 대신하지 무엇을 제거하는 무엇이 필요 추출 :

library(stringr) 

df = df %>% 
    mutate(Time = str_extract(Time, "\\d.+\\d")) 

참고 :

  • \\d는 자리를

  • .+ 일치하는 모든 문자를 한 번 이상 일치합니다. 이 일치는 패턴과 일치하는 가장 긴 문자열을 검색하는 의미가 있습니다.

  • \\d.+\\d 다음에 문자와 하나 이상의 문자 및 숫자가 일치합니다.

결과 :

    Time 
1 2017-07-24 04:13:00 
2 2017-07-24 07:01:12 
3 2017-07-24 05:18:00 
4 2017-07-24 05:00:45 
5 2017-07-24 19:44:30 

데이터 :

df = structure(list(Time = c("NA, 2017-07-24 04:13:00", "2017-07-24 07:01:12", 
"NA, 2017-07-24 05:18:00", "2017-07-24 05:00:45, NA", "NA, 2017-07-24 19:44:30, NA" 
)), .Names = "Time", row.names = c(NA, -5L), class = "data.frame")