Учитывая эти данные:Spread (tidyr) - Распространение повторяющихся значений
x <- c(1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4)
y <- c('Name', 'Street', 'Gender', 'Name', 'Street', 'Name', 'Street', 'Street', 'Dateofbirth', 'Gender','Name')
z <- c('Jasper', 'Broadway', 'Male', 'Alice', 'Narrowstreet', 'Peter', 'Neverland', 'Treasureisland', '1841', 'Male','Martin')
k <- data.frame(id = x, key = y, value = z)
Я хотел бы создать чистую таблицу 4-столбца, который имеет ключи как заголовки (т.е. имя, улица, Пол и дату рождения). Проблема здесь в том, что ключ «Улица» для Питера двойной. Я пытался использовать распространение (tidyr), но мне не удалось заставить его работать.
k <- k %>% group_by(id) %>%
mutate(index = row_number()) %>%
spread(key, value)
Я также дал выстрел:
k <- k %>% group_by(id) %>%
mutate(index = row_number()) %>%
spread(id, value)
Результат не то, что я ожидал, и обе таблицы довольно трудно работать. Есть идеи?
Непонятно, что вы хотите сделать с этими удвоенными значениями ... Один вариант (с использованием reshape2 вместо tidyr) выглядит как 'dcast (k, id ~ key, fun = toString)' – Frank
Хорошая точка. В идеале я хотел бы сохранить их и вставить в отдельные столбцы. Как второй лучший вариант, я мог бы просто сохранить первый. Я изменю вопрос, если вы считаете, что это недостаточно ясно. – Jasper
Да, я думаю, было бы хорошо отредактировать это. На мой взгляд, хорошо перечислять оба варианта. – Frank