如何在 R 中部分转置数据帧? (具体列到行)

How to partially transpose a dataframe in R? (specific column to row)

我想将特定列更改为一行,其中每个单元格的值都基于另一列。

我的数据框如下所示:

Race State Region Decile Freq
African a A 1 3
Caucasian a A 1 7
Asian a A 1 9
Mulatto a A 1 5
African b B 1 12
Caucasian b B 1 2
Asian b B 1 8
Mulatto b B 1 5

我想将 Race 列更改为一行(其中 Freq 确定每个单元格的值),所以我得到以下输出:

State Region Decile African Caucasian Asian Mulatto
a A 1 3 7 9 5
b B 1 12 2 8 5

这里的最终目的是计算每个州、地区和十等分的每场比赛的相对频率,但那是另一天的事情

tidyr::pivot_wider:

library(tidyr)

data %>% pivot_wider(names_from = 'Race', values_from = Freq)
# A tibble: 2 x 7
  State Region Decile African Caucasian Asian Mulatto
  <chr> <chr>   <int>   <int>     <int> <int>   <int>
1 a     A           1       3         7     9       5
2 b     B           1      12         2     8       5

数据:

data <- read.table(text=
'Race   State   Region  Decile  Freq
African     a   A   1   3
Caucasian   a   A   1   7
Asian   a   A   1   9
Mulatto     a   A   1   5
African     b   B   1   12
Caucasian   b   B   1   2
Asian   b   B   1   8
Mulatto     b   B   1   5', header=T)