Я новичок в R и пытаюсь удалить дублирующиеся столбцы из большого кадра данных (50К строк, 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))
Если вы запустите этокод, который вы увидите, удаляет только первый найденный дубликат.Я предполагаю, что это потому, что я делаю что-то не так.Кто-нибудь может указать, где я ошибаюсь, или, что еще лучше, указать мне, как лучше удалить дублирующиеся столбцы из кадра данных?