在 R 中将多个长列重塑为宽列格式

Reshaping multiple long columns into wide column format in R

我的示例数据集有多个列,我想将其转换为宽格式。我尝试使用 dcast 函数,但出现错误。下面是我的示例数据集:

df2 = data.frame(emp_id = c(rep(1,2), rep(2,4),rep(3,3)), 
                 Name = c(rep("John",2), rep("Kellie",4), rep("Steve",3)),
                 Year = c("2018","2019","2018","2018","2019","2019","2018","2019","2019"),
                 Type = c(rep("Salaried",2), rep("Hourly", 2), rep("Salaried",2),"Hourly",rep("Salaried",2)),
                 Dept = c("Sales","IT","Sales","Sales", rep("IT",3),rep("Sales",2)),
                 Salary = c(100,1000,95,95,1500,1500,90,1200,1200))

我希望我的输出看起来像:

一个选项是 tidyr 包中的函数 pivot_wider()

df.wide <- tidyr::pivot_wider(df2,
                              names_from = c("Type", "Dept", "Year"),
                              values_from = "Salary",
                              values_fn = {mean})

这应该能让您得到想要的结果。

你觉得这个输出怎么样?这不是预期的输出,但不知何故我发现它更容易解释数据??

df2 %>% 
    group_by(Name, Year, Type, Dept) %>% 
    summarise(mean = mean(Salary))

输出:

  Name   Year  Type     Dept   mean
  <chr>  <chr> <chr>    <chr> <dbl>
1 John   2018  Salaried Sales   100
2 John   2019  Salaried IT     1000
3 Kellie 2018  Hourly   Sales    95
4 Kellie 2019  Salaried IT     1500
5 Steve  2018  Hourly   IT       90
6 Steve  2019  Salaried Sales  1200