问题描述
我有一个包含两列重复值和几个唯一列的数据集。我想 group_by()
第一列具有重复值,同时将第二行转换为列。
例如
initial_df <- data.frame(
a = c("1999","1999","2000","2001","2001")
b = c("A","B","A","C","B"),c = c("1","2","3","4","5","6","7"),d = c("2","1","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))