我有一个 df 约 10000obs,24 个变量。该df的样本将是:
A <- c("EA32", "EA32", "EA32", "EA67", "EA67", "EA67", "EA67",
"EA34", "EA34", "EA34", "EA69", "EA69", "EA69", "EA69")
B <- c("c1", "c2", "c3", "c1", "c2", "c1", "c2",
"c2", "c2", "c1", "c2", "c2", "c3", "c3")
C <- c("USB", "UA", "UA", "UD", "UE", "USB", "UA",
"UA", "USB", "UZ", "UA", "UE", "USB", "UE")
df <- data.frame(A,B,C)
我很想生成一个看起来像这样的 df2:
B EA32 EA67 EA34 EA69
c1 USB USB NA NA
c1 NA NA UZ NA
c1 NA UD NA NA
c2 UA UA UA UA
c2 NA UE NA UE
c2 NA NA USB NA
c3 UA NA NA NA
c3 NA NA NA USB
c3 NA NA NA UE
我试过了:
df2 <- df %>% pivot_wider(names_from = A, values_from = C)
但这给了我三行和 5 列,其中来自 df$C 的数据分组到 c("","") 中,然后我尝试使用单独的行进行分离:
df2 <- df %>% tidyr::separate_rows(df, EA32, sep = ",")
df2 <- df2 %>% tidyr::separate_rows(df, EA67, sep = ",") ...
但我必须为每一列编写每一行代码,总共有 24 列,这变得非常乏味,并且不会生成我需要的 df2 的正确输出。任何帮助提出从 df 到 df2 的代码将不胜感激。
谢谢!