Как рассчитать одинаковое число значений для каждого столбца (все значения столбцов являются цифрами c) составляет менее 40% от этого столбца в наборе данных в R - PullRequest
1 голос
/ 23 апреля 2020

В коде R я хочу выбрать все переменные из набора данных, где одинаковое значение для каждого столбца составляет менее 40% для этого столбца. Я использую sapply, но не получаю правильный вывод. Примечание. Все значения в столбцах обозначены цифрами c.

train = train[, sapply(train, function(col) length(unique(col))) < 0.4*nrow(train)]

. Пожалуйста, предложите, как действовать.

1 Ответ

1 голос
/ 23 апреля 2020

Играя с набором игрушечных данных, я нашел этот код, который работает

train[, sapply(train, function(x) {(sort(table(x), decreasing = TRUE)/nrow(train))[[1]] < 0.4})]

По сути, я создаю таблицу относительных частот (отсортированных в порядке убывания) для каждого столбца чисел c в train, а затем проверяю, встречается ли наиболее частое значение для каждого столбца менее 40% случаев. Если да, этот столбец выбран, в противном случае отбрасывается.

...