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

时间:2018-10-10 14:35:39

标签: r pivot reshape

我对使用R进行编码非常陌生,我正在努力清理和转换某些数据。

我已经研究了reshape()和reshape2()在强制转换函数方面的不同用法,但我未能成功。

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

这是我的数据

#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

但是,我很难弄清楚这是怎么回事。重塑包装。

1 个答案:

答案 0 :(得分:-1)

您可以使用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个变量:第一个是分散在多列中的变量,第二个是设置要放入这些单元格中的值的变量。