如何在按 R 中的另一个变量分组时将行值转换为列

How to transform row values into columns while grouping by another variable in R

我有一个数据集,其中有两列具有重复值和几个唯一列。我想 group_by() 第一列具有重复值,同时将第二行转换为列。

例如,

initial_df <- data.frame(
                      a = c("1999", "1999", "2000", "2000", "2000", "2001", "2001")
                      b = c("A", "B", "A", "B", "C", "A", "B"),
                      c = c("1", "2", "3", "4", "5", "6", "7"), d = c("2", "1", "3", "4", "5", "6", "7")
            )

结果如下:

> initial_df
    a       b   c   d
1   1999    A   1   2
2   1999    B   2   1
3   2000    A   3   3
4   2000    B   4   4
5   2000    C   5   5
6   2001    A   6   6
7   2001    B   7   7

我想将其转换为如下所示的数据集:

>final_df
            A_c A_d B_c B_d C_c C_d
1   1999    1   2   2   1   Na  Na
2   2000    3   3   4   4   5   5
3   2001    6   6   7   7   Na  Na

我假设有一些方法可以使用 reshape2 包来完成,但很难想出一种方法来实现它。

library(tidyverse)
initial_df %>% 
   pivot_wider(id_cols = a, names_from = b, values_from = c(c,d))