Мне было предоставлено большое значение csv, равное 115 столбцам и 1000 строк. Столбцы имеют множество данных, некоторые из них основаны на символах, некоторые - целые и т. Д. Однако данные имеют множество нулевых переменных разных типов (NA, -999, NULL и т. Д.).Использование lapply для отображения процента нулевых переменных в каждом столбце в R
Что я хочу сделать, это написать сценарий, который будет генерировать список столбцов, где более 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%.
Может ли кто-нибудь помочь?
'lapply' не нужен' MARGIN'. Это для «apply». Вы можете проверить примеры в '? Lapply' – akrun