[英]How do I reshape my data so that rows are columns in R?
我有一個包含以下值的數據集
Item Number Sales in Dollars
1 50 10
2 50 15
3 60 20
4 60 30
5 70 35
6 70 45
我想重塑數據,結果將是
50 60 70
1 10 20 35
2 15 30 45
我怎樣才能實現這一目標?
在基礎 R 中:
unstack(df, Sales_in_Dollars~Item_Number)
X50 X60 X70
1 10 20 35
2 15 30 45
我們可以使用pivot_wider
:訣竅是group_by
並在組中創建一個id
以獲取此輸出,否則您將獲得一個帶有 NA 的列表
library(dplyr)
library(tidyr)
df %>%
group_by(ItemNumber) %>%
mutate(id = row_number()) %>%
pivot_wider(names_from=ItemNumber, values_from = SalesinDollars) %>%
select(-id)
`50` `60` `70`
<int> <int> <int>
1 10 20 35
2 15 30 45
使用data.table
:
data.table::dcast(as.data.table(df),
rowid(`Item.Number`) ~ `Item.Number`,
value.var = "Sales.in.Dollars")[, -1]
輸出
50 60 70
<int> <int> <int>
1: 10 20 35
2: 15 30 45
另一種可能的解決方案,基於tidyverse
:
library(tidyverse)
df %>%
pivot_wider(names_from = item, values_from = sales, values_fn = list) %>%
unnest(everything())
#> # A tibble: 2 x 3
#> `50` `60` `70`
#> <int> <int> <int>
#> 1 10 20 35
#> 2 15 30 45
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.