簡體   English   中英

如何重塑我的數據,使行成為 R 中的列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM