[英]How to partially transpose a dataframe in R? (specific column to row)
我想將特定列更改為每個單元格的值基於另一列的行。
我的 dataframe 如下所示:
種族 | State | 地區 | 十等分 | 頻率 |
---|---|---|---|---|
非洲人 | 一個 | 一個 | 1 | 3 |
白種人 | 一個 | 一個 | 1 | 7 |
亞洲人 | 一個 | 一個 | 1 | 9 |
混血兒 | 一個 | 一個 | 1 | 5 |
非洲人 | b | 乙 | 1 | 12 |
白種人 | b | 乙 | 1 | 2 |
亞洲人 | b | 乙 | 1 | 8 |
混血兒 | b | 乙 | 1 | 5 |
我想將 Race 列更改為一行(其中 Freq 確定每個單元格的值),所以我得到以下 output:
State | 地區 | 十等分 | 非洲人 | 白種人 | 亞洲人 | 混血兒 |
---|---|---|---|---|---|---|
一個 | 一個 | 1 | 3 | 7 | 9 | 5 |
b | 乙 | 1 | 12 | 2 | 8 | 5 |
這里的最終目標是計算每個種族的相對頻率 State、區域和十分位,但這是另一天
使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.