Это на самом деле хорошо работает для меня, когда я использую таблицу, на которую вы ссылаетесь. Возможно, проблема связана с вашими данными, то есть вы можете импортировать строки как факторы или что-то подобное. Попробуйте использовать приведенные ниже данные:
data_ige %>% spread(test, value)
#### OUTPUT ####
ID date 1 3 4 5 6 7 8
1 A 2008 0.035 NA NA NA NA NA NA
2 A 2011 2.750 NA NA NA NA NA NA
3 B 2011 9.990 3.65 0.68 0.02 0.17 0.50 0.09
4 C 2008 0.000 NA NA NA NA NA NA
5 C 2011 0.000 NA NA NA NA NA NA
6 D 2008 0.000 0.00 0.00 0.00 0.00 0.59 0.00
7 D 2011 9.990 0.49 0.20 0.08 0.16 0.50 0.13
Одна вещь, которую вы можете сделать, - добавить строку для test == 2
, которой нет в ваших данных. Таким образом, вы получите столбец 2
только с NA
с, точно так же как изображение фрейма данных, на который вы ссылаетесь:
data_ige %>%
add_row(ID = "A", date = 2008, test = 2) %>%
spread(test, value)
#### OUTPUT ####
ID date 1 2 3 4 5 6 7 8
1 A 2008 0.035 NA NA NA NA NA NA NA
2 A 2011 2.750 NA NA NA NA NA NA NA
3 B 2011 9.990 NA 3.65 0.68 0.02 0.17 0.50 0.09
4 C 2008 0.000 NA NA NA NA NA NA NA
5 C 2011 0.000 NA NA NA NA NA NA NA
6 D 2008 0.000 NA 0.00 0.00 0.00 0.00 0.59 0.00
7 D 2011 9.990 NA 0.49 0.20 0.08 0.16 0.50 0.13
Вот фрейм данных, который я использовал:
data_ige <- structure(list(ID = c("A", "A", "B", "B", "B", "B", "B", "B",
"B", "C", "C", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D",
"D", "D", "D", "D"), date = c(2008L, 2011L, 2011L, 2011L, 2011L,
2011L, 2011L, 2011L, 2011L, 2008L, 2011L, 2008L, 2008L, 2008L,
2008L, 2008L, 2008L, 2008L, 2011L, 2011L, 2011L, 2011L, 2011L,
2011L, 2011L), test = c(1L, 1L, 1L, 3L, 4L, 5L, 6L, 7L, 8L, 1L,
1L, 1L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 3L, 4L, 5L, 6L, 7L, 8L),
value = c(0.035, 2.75, 9.99, 3.65, 0.68, 0.02, 0.17, 0.5,
0.09, 0, 0, 0, 0, 0, 0, 0, 0.59, 0, 9.99, 0.49, 0.2, 0.08,
0.16, 0.5, 0.13)), class = "data.frame", row.names = c(NA,
-25L))