2017-11-29 18 views
0

以下に、私が持っているデータフレームの例を示します。私のデータフレームには他の多くの列があり、データ型は指定された列の "文字"です。Rのサブストリングから「NA」を取り除く

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」、カンマおよびスペース(「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

  • .+マッチの任意の文字1回以上の数字と一致します。この一致は欲張りです。つまり、パターンに一致する最長の文字列を検索します。

  • \\d.+\\dは、数字の後に任意の文字と1文字以上の数字が一致するものと一致します。

結果:

    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") 
関連する問題