如何在按 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))
我有一个数据集,其中有两列具有重复值和几个唯一列。我想 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))