Я новичок в R и пытаюсь удалить повторяющиеся столбцы из большого массива данных (строки 50K, 215 столбцов). Кадр имеет сочетание дискретных непрерывных и категориальных переменных.
Мой подход заключался в том, чтобы сгенерировать таблицу для каждого столбца в кадре в список, а затем использовать функцию duplicated()
для поиска строк в дублирующем списке, как показано ниже:
age=18:29
height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5)
gender=c("M","F","M","M","F","F","M","M","F","M","F","M")
testframe = data.frame(age=age,height=height,height2=height,gender=gender,gender2=gender)
tables=apply(testframe,2,table)
dups=which(duplicated(tables))
testframe <- subset(testframe, select = -c(dups))
Это не очень эффективно, особенно для больших непрерывных переменных. Тем не менее, я пошел по этому маршруту, потому что мне не удалось получить тот же результат, используя сводку (обратите внимание: следующее предполагает оригинальный testframe
содержащий дубликаты):
summaries=apply(testframe,2,summary)
dups=which(duplicated(summaries))
testframe <- subset(testframe, select = -c(dups))
Если вы запустите этот код, вы увидите, что он удаляет только первый найденный дубликат. Я полагаю, это потому, что я делаю что-то неправильно. Может ли кто-нибудь указать, где я ошибаюсь или, что еще лучше, указать мне в сторону лучшего способа удаления повторяющихся столбцов из фреймворка данных?