如何使用多个旧列的值创建新列?

How can I create new columns with the values of multiple old columns?

第一次发帖,如果有什么不对请告诉我,我在 R 中有一个按以下方式划分的数据框:

location type amount produt
a x 10 p1
a x 20 p2
b x 50 p5
b y 100 p10

最后我需要将位置分组到一行中,并使“类型”列成为具有“产品”和“金额”列值的新列,就像这样:

location A_P_X A_P_Y
a p1_10,p2_20
b p5_50 p10_100

我尝试使用一种热编码来创建新列,但在尝试根据原始“类型”值填充新列时,我 运行 遇到了问题

library(tidyverse)
df %>%
  unite("val", produt:amount, sep = "_") %>%
  mutate(type = paste0("A_P_", toupper(type))) %>%
  pivot_wider(names_from = type, values_from = val, 
              values_fn = list(val = ~paste(., collapse = ", ")))

结果

# A tibble: 2 x 3
  location A_P_X        A_P_Y  
  <chr>    <chr>        <chr>  
1 a        p1_10, p2_20 NA     
2 b        p5_50        p10_100