R语言pivot_wider转宽表时values_from长度不匹配问题求解
library(tidyverse) # 样例数据 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 <- df %>% group_by(B, A) %>% mutate(row_id = row_number()) %>% ungroup() %>% pivot_wider(names_from = A, values_from = C) %>% select(-row_id) %>% arrange(B)
直接运行上述代码即可得到你需要的df2结构,不管你实际数据中A有多少个不同取值,都不需要修改代码适配列数。
原理解释:你之前直接调用pivot_wider生成列表列,是因为同一个B+A组合存在多个C值,添加组内行号row_id后,每个B+A+row_id组合仅对应一个C值,透视后不会出现列表合并的问题,也无需单独拆分每一列。
内容的提问来源于stack exchange,提问作者vcat
相关产品推荐
相关产品推荐

