我得到了一个大的 csv,它有 115 列和 1000 行。这些列有各种各样的数据,有些是基于字符的,有些是整数等。但是,这些数据有很多不同类型的空变量(NA、-999、NULL 等)。
我想要做的是编写一个脚本,该脚本将生成一个列列表,其中列中超过 30% 的数据是某种类型的 NULL。
为此,我编写了一个脚本来为我提供一列的空百分比(十进制)。这个脚本对我来说很好。
length(which(indata$ObservationYear == "" | is.na(indata$ObservationYear) |
indata$ObservationYear == "NA" | indata$ObservationYear == "-999" |
indata$ObservationYear == "0"))/nrow(indata)
我想编写一个脚本来为所有列执行此操作。我相信我需要使用 lapply 功能。
我试图在这里这样做,但是,我似乎根本无法让这个脚本工作:
Null_Counter <- lapply(indata, 2, length(x),
length(which(indata == "" | is.na(indata) | indata == "NA" | indata == "-999" | indata == "0")))
names(indata(which(0.3>=Null_Counter / nrow(indata))))
我收到以下错误:
Error in match.fun(FUN) : '2' is not a function, character or symbol
和:
Error: could not find function "indata"
理想情况下,我希望它给我的是所有列名的向量列表,其中所有空变量(NA、-999、0、NULL)的百分比超过 30%。
任何人都可以帮忙吗?