Dplyr "Выбрать" - Ошибка: найдено дублированное имя столбца
Я пытаюсь извлечь столбцы из DT в новый DT, используя select {dplyr}
extract_Data <- select(.data = master_merge, subjectID, activity_ID,
contains("mean\\(\\)"), contains("std\\(\\)"))
Есть 563 столбца, поэтому я прошу извлечь первый и второй столбцы (предмет, активность) и все остальные столбцы, где присутствует значение mean() или std().
Нет дубликатов столбцов, которые могут быть созданы здесь. настолько тупик, почему. Я пробовал все варианты выбора, но всегда Ошибка: Дублированное имя столбца.
Как я могу устранить эту проблему - я просмотрел все имена столбцов 563 и дубликатов нет.
Ответы
Ответ 1
Корень проблемы - это недопустимые символы в именах исходных столбцов. Обсуждение в Ограничения имен переменных в R также относится к именам столбцов. Попробуйте использовать уникальные имена столбцов с допустимыми символами, используя make.names().
valid_column_names <- make.names(names=names(master_merge), unique=TRUE, allow_ = TRUE)
names(master_merge) <- valid_column_names
Ответ 2
Вот решение, которое я нашел:
data <- data[ , !duplicated(colnames(data))]
Это подмножество набора данных без всех дублированных столбцов.
Надеюсь, что это поможет.
Ответ 3
Дубликаты из фильтра соответствия могут вызывать ошибку "дублированного имени". Пример:
library(dplyr)
x <- data.frame(1, 2, 3)
names(x) <- c("a", "a", "b")
x %>%
select(matches("b"))
Если вам не нужны эти столбцы, устраните их с помощью
x <- x[ !duplicated(names(x)) ]
Ответ 4
Не прямой ответ, но это поможет многим людям.
Для всех вас, студентов Coursera, сталкивающихся с этой проблемой с этим набором данных: есть дубликаты имен столбцов. Например, 'fBodyAccJerk-bandsEnergy() - 1,16' встречается дважды. Проверьте:
your_merged_data_with_column_names [400: 420]
Мне бы хотелось показать результат, но мой браузер не будет поддерживать кнопку "код", а не Ctrl-K, и слишком много данных для отступов вручную. Попробуйте этот код для себя и тщательно проверьте "Переменные не показаны"!
Я сейчас работаю над решением, возможно, используя приведенные выше ответы или форум курсов.
Ответ 5
Я был озадачен той же ошибкой. Избегайте использования select. Если meanStdcolumns - это список столбцов, содержащих средний или std (который вы можете использовать с помощью grep), то работает master_merge [, meanStdcolumns].
Ответ 6
Прежде чем назначить имена столбцов, отфильтруйте столбцы, получив список индексов, используя
meanStdColumns <- grep("mean|std", features$V2, value = FALSE)
а затем назначьте имена столбцов, используя
meanStdColumnsNames <- grep("mean|std", features$V2, value = TRUE)