2016-12-04 6 views
0

私はこれをすべて見てきましたが、答えは見つかりませんでした。私は、 "Unknown" "No response"や "Refused to answer"などの行に沿って複数のレベルの列を含むデータフレームを持っています。これらはすべて解析には役に立たないので、それらをすべてNAに置き換えたいと思います。特定のデータフレーム列の複数の文字列を置換するR

データフレーム全体で、特定の列のみを置き換えたくないことに注意してください。実際に私にとって有用な同じ名前の値を含む他の列があり、それらをそのまま残したいと思います。

私が使用して1度に1つずつを置き換えることができた:

data$col1 <- factor(gsub("Unknown", "NA", data$col1)) 

だけが、一度に1つの文字列のために働くことを。複数の文字列を追加しようとすると、Rがエラーをスローします。これを行うより効率的な方法はありますか?

私は比較的新しいコーディングです。優しくしてください!

+0

read.csvでデータセットを読み取っているときに、NAに変更できる値を指定することができます。 'dat < - read.csv ( "yourfile.csv"、na.strings = c( "不明"、 "応答なし"、 "返信拒否")) ' – akrun

+0

' $ col1 < - factorを試してください(gsub( "Unknown | No response | 「答え」、「NA」、データ$ col1)) '。 –

答えて

1

我々はNAに複数の値を変更する必要がある場合は、データ

dat <- read.csv("yourfile.csv", na.strings = c("Unknown", "No response", 
      "Refused to answer")) 

を読みながら一つの選択肢は、read.csv/read.tablena.stringsを使用しているが、ここでの問題は、そのような場合には、特定の列である、のインデックスを作成します列、%in%と論理インデックスを作成することによって列とreplace値をループ(これらはサブストリングではないと仮定)

columnsOfInterest <- c(1, 4, 5) #just for an example 
df1[columnsOfInterest] <- lapply(df1[columnsOfInterest], function(x) 
     replace(x, x %in% c("Unknown", "No response", "Refused to answer"), NA)) 

注:引用に変更しますNA ie "NA"はむしろ役に立たず、ちょうどNA

関連する問題