У меня была точно такая же проблема, и я думаю, что смотрю на тот же набор данных, что и вы.Это данные датчика движения со смартфона, не так ли?
Проблема именно в том, что говорится в сообщении об ошибке!У этого набора черт есть повторяющиеся имена столбцов.Вот как я это исследовал.Я не мог использовать ваши dput
команды, поэтому я не мог проверить ваши данные.Я показываю свой код и результаты.Я предлагаю вам заменить вашу переменную, dataset_test
, где у меня есть samsungData
.
Вот ошибка.Если вы просто выбираете набор данных, но не указываете столбцы, в сообщении об ошибке указываются дубликаты.
select(samsungData)
Это дало мне эту ошибку, и именно это ваша ошибка dplyr пыталась сообщить вам..
Ошибка: столбцы "fBodyAcc -bandEnergy () - 1,8", "fBodyAcc -bandEnergy () - 9,16", "fBodyAcc -bandEnergy () - 17,24", "fBodyAcc -bandEnergy() -25,32 "," fBodyAcc -bandEnergy () - 33,40 ", ... должно иметь уникальное имя
Затем я хотел посмотреть, где был скопирован этот первый столбец.(Я не думаю, что когда-нибудь буду хорошо работать с регулярными выражениями, но это разозлило меня, и я хотел найти его.)
has_dupe_col <- grep("fBodyAcc\\-bandsEnergy\\(\\)\\-1,8", names(samsungData))
names(samsungData)[has_dupe_col]
Результаты:
[1] "fBodyAcc-bandsEnergy()-1,8" "fBodyAcc-bandsEnergy()-1,8" "fBodyAcc-bandsEnergy()-1,8"
Это показало мне, что одно и то же имя столбца появляется в трех позициях.Это не будет хорошо играть в dplyr.
Тогда я хотел посмотреть таблицу частот для всех имен столбцов и вызвать дубликаты.
names_freq <- as.data.frame(table(names(samsungData)))
names_freq[names_freq$Freq > 1, ]
Несколько из них появляются три раза!Вот только несколько.
Var1 Freq
9 fBodyAcc-bandsEnergy()-1,16 3
10 fBodyAcc-bandsEnergy()-1,24 3
11 fBodyAcc-bandsEnergy()-1,8 3
Заключение:
Инструмент (dplyr) не сломан, данные неисправны.Если вы хотите использовать dplyr для выбора из этого набора данных, вам нужно будет найти эти дубликаты имен столбцов и что-то с ними сделать.Возможно, вы измените имя столбца (dplyr mutate
сделает это за вас без горя).С другой стороны, возможно, они должны быть продублированы и находятся там, потому что это временные ряды или некоторая итерация экспериментальных наблюдений.Может быть, тогда вам нужно объединить эти столбцы в один и предоставить другое измерение (переменную), чтобы различать их.
Это аналитическая часть анализа данных.Вам нужно будет покопаться в данных, чтобы увидеть правильный ответ.Либо это, либо вопрос, на который вы пытаетесь ответить, даже не должен включать эти дубликаты столбцов, и в этом случае вы выбрасываете их и спокойно спите.
Добро пожаловать в науку о данных!В лучшем случае, это всего лишь 10% классной математики и машинного обучения.90% надевают перчатки и маску и вытирают подобную хрень в ваших данных.