Мы можем использовать spread
после преобразования 'FNAME' в factor
с указанным levels
и в spread
, используйте drop = FALSE
, чтобы избежать падения столбцов без комбинаций
library(tidyverse)
unite_DF %>%
mutate(FNAME = factor(FNAME, levels = LETTERS[1:8])) %>%
spread(FNAME, FVALUE, drop = FALSE)
# AID A B C D E F G H
#1 1 10 12 16 NA NA NA NA NA
#2 2 10 NA NA NA 4 NA NA NA
#3 3 NA NA NA NA NA 10 13 NA
данные
unite_DF <- structure(list(AID = c(1L, 1L, 1L, 2L, 2L, 3L, 3L), FNAME = c("A",
"B", "C", "A", "E", "F", "G"), FVALUE = c(10L, 12L, 16L, 10L,
4L, 10L, 13L)), class = "data.frame", row.names = c(NA, -7L))