删除数据框中的非数字值(*未知*)

时间:2018-04-09 06:49:11

标签: r dataframe na

我需要删除数据框中的非数字值。因为我只需要数值来进行分位数,百分位数等。下面是我的数据。

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

1 个答案:

答案 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))