答案 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