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

Remove Non Numeric values (*Unknown*) in my data frame

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

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

我们可以在 read.csv/read.table

中指定 na.strings 来避免这个问题
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))