旋转一列,同时将其余列保留在 R 中

Pivoting one column while keeping the rest in R

我对 R 中的编码还很陌生,我正在清理和转换一些数据。

我已经查看了 reshape() 和 reshape2() 的一些不同用法以帮助我转换函数,但我未能成功。

基本上我想做的是,将一列向上移动作为值的列 headers。

这是我的数据:

#My data:
KEYFIGURE   LOCID    PRDID    KEYFIGUREDATE    KEYFIGUREVALUE
Sales       1001     A        2018-01-01       1
Promo       1001     A        2018-01-02       2
Disc        1001     A        2018-01-03       3
Sales       1001     B        2018-01-01       10
Promo       1001     B        2018-01-01       11
Disc        1002     B        2018-01-03       12

我想得到的结果:

LOCID    PRDID    KEYFIGUREDATE    Sales    Promo     Disc
1001        A        2018-01-01    1        2         
1001        A        2018-01-03    3 
1001        B        2018-01-01    10       11
1002        B        2018-01-03                       12

但是,我很难弄清楚这怎么可能是一种聪明的方式。改造包。

你可以用 tidyr::spread:

在一行中完成
library(tidyr)
df %>%
    spread(KEYFIGURE, KEYFIGUREVALUE)

  LOCID PRDID KEYFIGUREDATE Disc Promo Sales
1  1001     A    2018-01-01   NA    NA     1
2  1001     A    2018-01-02   NA     2    NA
3  1001     A    2018-01-03    3    NA    NA
4  1001     B    2018-01-01   NA    11    10
5  1002     B    2018-01-03   12    NA    NA

该函数的工作方式是在数据集中为其提供 2 个变量:第一个是分布在多个列中的变量,而第二个是设置要放入这些单元格中的值的变量。