【发布时间】:2013-12-16 11:15:26
【问题描述】:
I aggregate() value 列总和每 site 级别的 R data.frame 下面给出:
set.seed(2013)
df <- data.frame(site = sample(c("A","B","C"), 10, replace = TRUE),
currency = sample(c("USD", "EUR", "GBP", "CNY", "CHF"),10, replace=TRUE, prob=c(10,6,5,6,0.5)),
value = sample(seq(1:10)/10,10,replace=FALSE))
df.site.sums <- aggregate(value ~ site, data=df, FUN=sum)
df.site.sums
# site value
#1 A 0.2
#2 B 0.6
#3 C 4.7
但是,我希望能够指定生成的df.site.sums 的行顺序。比如:
reorder <- c("C","B","A")
?special_sort(df, BY=site, ORDER=reorder) # imaginary function
# site value
#1 C 4.7
#2 B 0.6
#3 A 0.2
我如何使用 base R 来做到这一点?为了清楚起见,这本质上是一个 数据框行排序问题,其中上下文是 aggregate() 函数(这可能重要也可能不重要)。
This 是相关的,但不能直接解决我的问题,或者我错过了解决方案的关键。
更新
为了将来参考,我在link 上找到了针对目标向量对 data.frame 的行进行排序的解决方案。我想它可以用作后处理步骤。
df.site.sums[match(reorder,df.site.sums$site),]
【问题讨论】: