首页 > 解决方案 > 旋转一列,同时将其余列保留在 R 中

问题描述

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

我已经研究了 reshape() 和 reshape2() 的一些不同用途,以便为 cast 函数提供帮助,但我未能成功。

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

这是我的数据:

#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

但是,我很难弄清楚这可能是如何以一种聪明的方式进行的。重塑包装。

标签: rpivotreshape

解决方案


您可以在一行中执行此操作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 个变量:第一个是分布在多个列中的变量,而第二个是设置要放入这些单元格的值的变量。


推荐阅读