以特定方式转换为宽格式

时间:2015-11-09 06:48:57

标签: r unpivot

在每个区域,测量各种Rockband的性能。我们需要重新塑造,以便方便地看到前3个品牌及其每个区域的得分。给定输入文件将类似于Input File Look like

Output File look like

1 个答案:

答案 0 :(得分:0)

我们可以尝试使用data.table。转换' data.frame'到' data.table' (setDT(df1)),按'区'分组,我们order' PopularityScore'前三行(head(.SD,3))的子集,我们创建一个按' Area'分组的序列列(' ind'),然后使用{{1}重新整形为宽格式}。

dcast

数据

library(data.table)#v1.9.6+
 DT <- setDT(df1)[order(-PopularityScore), head(.SD,3) ,.(Area)][, ind:= 1:.N, Area]
dcast(DT, Area~ind, value.var=c('RockBand', 'PopularityScore'))
#           Area  RockBand_1 RockBand_2 RockBand_3 PopularityScore_1
#1: floridaChrist       Rocus  Metajones         U3             87012
#2:         sesam FlowerModes   Scouting         U3             51326
#   PopularityScore_2 PopularityScore_3
#1:             43136             17969
#2:             36622             30839