#r #tidyr
#r #tidyr
Вопрос:
Я пытаюсь расширить большой набор данных, объединив несколько столбцов в идентификатор.
Я использовал spread, но в настоящее время я просто получаю столбец, который создает spread, но количество строк остается таким же, как и раньше. В настоящее время у меня есть:
ID Code_Type Code
1 10 4
1 9 5
2 10 6
2 9 7
Я хотел бы:
ID Code_Type_10 Code_type_9
1 4 5
2 6 7
Вот мой текущий код
t <- spread(df, Code_Type, Code)
Однако, когда я делаю это, он создает столбцы, но не сжимает строки.
Комментарии:
1. Не уверен, что вы подразумеваете под «он создает столбцы, но не сжимает строки». Я получаю то, что кажется вашим результатом после добавления
sep = "_"
кspread
вызову2. Итак, что происходит, так это то, что я получаю два столбца в конце фрейма данных, которые являются столбцами Code_type, но данные по-прежнему высокие
3. вы должны убедиться, что ваши данные правильно представлены в этом примере.
spread(df, Code_Type, Code, sep = "_")
выводится точно для меня, но это может быть связано с наличием большего количества столбцов
Ответ №1:
Добавляю немного к записи MDEWITT
df <- data.frame("ID" = c(1,1,2,2),
"Code_Type" = c(10,9,10,9),
"Code" = c(4,5,6,7))
t <- tidyr::spread(df, Code_Type, Code)
names(t)[c(2,3)] <- paste0(rep("Code_Type_", 2), names(t)[c(2,3)])
df %>%
mutate(Code_Type = paste0("Code_Type_", Code_Type)) %>%
spread(Code_Type, Code)
> t
ID Code_Type_9 Code_Type_10
1 1 5 4
2 2 7 6
Ответ №2:
Это то, о чем вы думаете?
df %>%
mutate(Code_Type = paste0("Code_Type_", Code_Type)) %>%
spread(Code_Type, Code)
Я думаю, вам просто нужно добавить шаг изменения, чтобы заставить его работать.