2014-10-12 112 views
0

我有一個data-frame包含#作爲多列中的缺失值。我怎麼能把所有這樣的# s轉換成NA s?如何將R數據框中的特殊值轉換爲NA?

+1

'read.table(file,na.strings =「#」)' – 2014-10-12 05:57:05

+0

Thanks @RichardScriven。如果數據已經存在於'data-frame'中怎麼辦? (假設我只能訪問'data-frame'而不是'file') – Sangram 2014-10-12 05:58:50

+0

然後嘗試'df [df ==「#」] < - NA' – 2014-10-12 05:59:30

回答

2

您可以通過幾種方法做到這一點。一個是與na.strings參數設置爲"#"

read.table(file, na.strings = "#") 

另一種是隻用

df[df == "#"] <- NA 
2

更改數據幀df值我寫a function makemeNA即重新讀取文件部分my "SOfun" package

功能看起來像這樣(如果你不想讓包只是這個功能):

makemeNA <- function (mydf, NAStrings, fixed = TRUE) { 
    if (!isTRUE(fixed)) { 
    mydf[] <- lapply(mydf, function(x) gsub(NAStrings, "", x)) 
    NAStrings <- "" 
    } 
    mydf[] <- lapply(mydf, function(x) type.convert(
    as.character(x), na.strings = NAStrings)) 
    mydf 
} 

用法是:

makemeNA(df, "#") 

獲取包含:

library(devtools) 
install_github("mrdwab/SOfun") 
2
is.na(dat) <- dat == "#" 

將執行此操作(其中dat是您的數據幀的名稱)。