2015-11-06 203 views
0

我有一個6列1800行的數據幀。數據從軟件導出,結果爲「是」,「否」和「 - 」(對於未記錄的數據)。我想改變 - 對於NA,是到1,否爲0.是否有一種好方法可以一次完成這一切?替換R數據幀中的值

我試過datap[datap=="-"] <- NA,它將「 - 」的所有值改爲<NA>。我認爲這是我想要的?然後,當我試圖datap[datap=="No"] <- 0,我得到了一個錯誤:

> 1: In `[<-.factor`(`*tmp*`, thisvar, value = "0") : 
invalid factor level, NA generated 

而所有的「不」的價值觀成爲NA。我在這裏做錯了什麼?

+0

當你在數據讀取方面嘗試添加兩個參數'從datap < - 函數read.table(my_file,stringsAsFactors = FALSE,na.strings =「 - 」)'。然後你可以替換列值。 –

+0

使用'as.character'將列更改爲'character',然後在替換之前用替換值替換或創建新級別。 – akrun

+0

謝謝!皮埃爾的答案奏效了,但是當我將「是/否」更改爲1/0時,他們是字符。如何將多列更改爲數字,而不更改日期列?我一直在用'datap $ taskked < - as.numeric(datap $ taskked)'來單獨更改它們,但是有沒有辦法同時更改多個? – Madison

回答

1

這樣的事情可以做:

x <- sample(c("Yes", "No", "-"), 7, repl=TRUE) 
y1 <- c("Yes", "No", "-"); y2 <- c(1, 0, NA) 
y2[match(x,y1)] 

read.table()設置的參數read.table(..., as.is=TRUE)read.table(..., stringsAsFactors=FALSE)