2016-12-04 92 views
0

我已經找遍了這個,但沒有找到答案。我有一個數據框,其中包含沿着「未知」「無響應」或「拒絕回答」之類的多個級別的列。所有這些對我來說都是無用的分析,所以我想用NA來代替它們。替換R中的特定數據幀列中的多個字符串

請注意,我不想在整個數據框中只替換它們,只有特定的列!還有其他一些列包含的值與我實際有用的名稱相同,我想讓它們保持獨立。

我已經成功使用,以取代他們一次一個:

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

但每次只適用於一個字符串。如果我嘗試添加多個字符串,R會引發錯誤。有沒有更有效的方法來做到這一點?

我是比較新的編碼,請溫柔!

+0

在read.csv中使用'na.strings',即在讀取數據集時,可以指定哪些值可以更改爲NA,'dat < - read.csv (「yourfile.csv」,na.strings = c(「Unknown」,「No response」,「拒絕回答」))' – akrun

+0

嘗試'data $ col1 < - factor(gsub(「Unknown | No response | Refused to答案「,」不適用「,數據$ col1))'。 –

回答

1

如果我們需要改變NA多個值,在讀取數據

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

然而,這裏的問題是與特定的列,在這種情況下,一個選項是在read.csv/read.table使用na.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即"NA"相當無用,而我們只需要NA

相關問題