Работа с "Дублирующими идентификаторами" при преобразовании данных из длинного в широкоформатный формат с помощью Tidyr

Я не могу понять, как обойти тидир spread ошибка

"Ошибка: повторяющиеся идентификаторы"

Во-первых, я буду использовать простой фрейм данных ниже, чтобы показать, как бы я хотел, чтобы результаты выглядели. Приведенный ниже кадр данных работает так, как мне хотелось бы, поскольку дублирующих идентификаторов нет.

Names<-c("John","John","John","Chris","Chris","Chris","Sara","Sara","Sara")

Category<-c("Accommodation","Disability","Living Arrangements","Accommodation","Disability","Living Arrangements","Accommodation","Disability","Living Arrangements")

Description<-c("Apartment","Vision","Alone","House","SCI","Family","Alone","Vision","Spouse")

df<-data.frame(Names,Category,Description)

Затем я использую Tidyr spread создать широкоформатный фрейм данных:

dfS<-df%>%spread(Category,Description)

Это создает информационный кадр с "Category" в качестве переменных столбца, заполненных "Description".

Однако данные, с которыми я на самом деле работаю, похожи на приведенный ниже кадр данных, и когда я пытаюсь создать такой же аккуратный кадр данных, используя tidyr spread как и выше, я получаю ошибку "дубликат идентификатора", поскольку у категории оборудования есть два варианта.

Names<-c("John","John","John","John","John","Chris","Chris","Chris","Chris","Chris","Sara","Sara","Sara","Sara","Sara")

Category<-c("Accommodation","Disability","Equipment","Equipment","Living Arrangements","Accommodation","Disability","Equipment","Equipment","Living Arrangements","Accommodation","Disability","Equipment","Equipment","Living Arrangements")

Description<-c("Apartment","Vision","Scooter","Walker","Alone","House","SCI","Walker","Bed","Family","Alone","Vision","Cane","Bed","Spouse")

df<-data.frame(Names,Category,Description)

Я не могу понять простой способ справиться с этой ситуацией. Я проверил другие сообщения здесь, и большинство из них слишком сложны или не работают. Я попробовал этот вариант:

df2<-df%>%group_by(Category,Description)%>%
     summarise(Category=toString(unique(Category)))%>%
     spread(Category,Description,fill='')

но это приводит к

"Ошибка: невозможно изменить группирующую переменную"

Я скопировал код из другого поста, поэтому признаюсь, что не совсем уверен, как он работает, и, возможно, допустил ошибку. Я все еще относительно новичок в R и особенно в tidyr, так что я надеюсь, что кто-то может предложить простое решение, которое позволит мне создать аккуратный информационный фрейм с использованием распространения tidyr в первом примере выше, предпочтительно с помощью dplyr или reshape2.

0 ответов

Другие вопросы по тегам