Добро пожаловать в Stackexchange. Я думаю, что это действительно более правильный вопрос для Stackoverflow, потому что это вопрос программирования, а не вопрос статистики.
Однако я немного помогу.
Прежде всего, ваш вопрос , как указано, не имеет решения, потому что вы не можете использовать целые числа в качестве имен столбцов.
Но, что более важно, то, что вы хотите сделать, на самом деле не имеет смысла с точки зрения «аккуратных» данных.
В аккуратных данных каждая строка должна представлять уникальное «наблюдение». Однако в исходном фрейме данных, который вы указываете, нет никакой связи между набором {A, D, Z}, а также другими строками в вашем целевом фрейме данных. Следовательно, no набор аккуратных операций будет соответствовать вашему желанию.
Однако, если вы создадите другой столбец, который их связывает, вы можете использовать этот столбец в операторе spread
, чтобы получить то, что вы хотите.
library(tidyverse)
df1 = data.frame(
C1 = rep(c(1,2,3), each=3),
C2 = LETTERS[1:9]
)
df1 %>% spread(C1, C2)
#> Error: Each row of output must be identified by a unique combination of keys.
#> Keys are shared for 9 rows:
#> * 1, 2, 3
#> * 4, 5, 6
#> * 7, 8, 9
df2 = data.frame(
C1 = rep(c(1,2,3), each=3),
C2 = LETTERS[1:9],
C3 = rep(c(1,2,3), times=3)
)
df2 %>% spread(C3, C2)
#> C1 1 2 3
#> 1 1 A B C
#> 2 2 D E F
#> 3 3 G H I
Создано 2020-05-08 пакетом REPEX (v0.3.0)