我需要删除数据框中的非数字值。因为我只需要数值来进行分位数,百分位数等。下面是我的数据。
dataL
[ reached getOption("max.print") -- omitted 12892 entries ]
648 Levels: *Unknown* .P 001 111110 111199 111219 111310 111331 111335 111336 111339 111419 ... N/A
正如你所看到的,有 Unknown ,。P等字符值。我需要删除那些做百分位,分位数等的东西。 这就是我所做的。
dataL[dataL == "NA" | dataL == "N/A" |dataL == "*Unknown*" |dataL == ".P" |dataL == "NULL"] <- NA
dataS <- na.omit(dataV)
但是当我运行dataS时,它仍然具有字符值 Unknown
dataS
678 Levels: *Unknown* 0111 0116 0119 0139 0173 0174 0175 0179 0181 0182 0211 0212 0252 0711 ... 9999
答案 0 :(得分:2)
我们可以在na.strings
read.csv/read.table
时避免此问题
dataL <- read.csv("file.csv", stringsAsFactors = FALSE,
na.strings = c("NA", "N/A", "Unknown*", "NULL", ".P"))
当前方法的问题是这些列为factor
列,将levels
替换为NA
仍会显示未使用的levels
。因此,我们需要droplevels
删除未使用的levels
dataS <- droplevels(na.omit(dataL))