【问题标题】:Pivot wider with multiple columns [duplicate]使用多列旋转更宽[重复]
【发布时间】:2021-05-08 01:26:31
【问题描述】:

我有一个看起来像这样的数据集

df <- data.frame(Country = c("USA","USA","USA","UK","UK","UK"),
                 Measure = c("Revenue","Profit","emp","Revenue","Profit","emp"),
                 Year_19 = c("250000","100000","15","140000","25000","4"),
                 Year_20 = c("130000","44000","8","76000","13000","3"))

我想重新排列它,使最终数据显示为这样

       Year_19_Revenue   Year_19_Profit    Year_19_emp    Year_20_Revenue   Year_20_Profit    Year_20_emp
USA      250000            100000             15             130000          44000                8
UK       140000            25000              4              76000           13000                3

无法理解如何执行此操作。有人可以帮忙吗?谢谢

【问题讨论】:

    标签: r pivot spread


    【解决方案1】:

    我们可以在values_from中指定多列

    library(dplyr)
    library(tidyr)
    df %>% 
       pivot_wider(names_from = Measure, values_from = c(Year_19, Year_20))
    

    -输出

    # A tibble: 2 x 7
    #  Country Year_19_Revenue Year_19_Profit Year_19_emp Year_20_Revenue Year_20_Profit Year_20_emp
    #  <chr>   <chr>           <chr>          <chr>       <chr>           <chr>          <chr>      
    #1 USA     250000          100000         15          130000          44000          8          
    #2 UK      140000          25000          4           76000           13000          3     
    

    【讨论】:

    • 非常感谢。我应该得到它。新使用 pivot 和 R
    【解决方案2】:

    基本 R 选项

    reshape(
      df,
      direction = "wide",
      idvar = "Country",
      timevar = "Measure"
    )
    

    给予

      Country Year_19.Revenue Year_20.Revenue Year_19.Profit Year_20.Profit
    1     USA          250000          130000         100000          44000
    4      UK          140000           76000          25000          13000
      Year_19.emp Year_20.emp
    1          15           8
    4           4           3
    

    data.table 选项与dcast

    > dcast(setDT(df),Country~Measure,value.var = c("Year_19","Year_20"))
       Country Year_19_Profit Year_19_Revenue Year_19_emp Year_20_Profit
    1:      UK          25000          140000           4          13000
    2:     USA         100000          250000          15          44000
       Year_20_Revenue Year_20_emp
    1:           76000           3
    2:          130000           8
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多