我对使用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
但是,我很难弄清楚这是怎么回事。重塑包装。
答案 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个变量:第一个是分散在多列中的变量,第二个是设置要放入这些单元格中的值的变量。