如何在 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)
我想将特定列更改为一行,其中每个单元格的值都基于另一列。
我的数据框如下所示:
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)