我有一个类似下面的数据集,我有大约100万行,如下所示:
orderid prodid priceperitem date category_eng
3010419 2 62420 18.90 2014-10-09 roll toliet paper
我目前正在绘制这些产品散点图的图,使用priceperitem
作为y轴,date
作为x轴。我还根据这些产品订购了这些产品。它们的价格随时间变化的系数。我已将这些结果汇总到另一个数据集中,如下所示:
prodid mean count sd cv
424657 12.7124 5541.0000 10.239 80.54999886
158726193 23.7751 1231.0000 17.7567 74.68621596
我使用以下代码同时获取许多产品的散点图:
ggplot(Roll50.last, aes(x=date, y=priceperitem)) + geom_point() + facet_wrap(~prodid)
但我想根据这些产品订购这些产品'我在另一个data.frame中汇总的简历。我想知道是否有一种方法可以让我指定我想按照另一个数据帧中的值的顺序对面板图进行排序。
以下是一个小样本数据。基本上,这个想法是为了获得不同的产品。价格cv = s.d./mean。我想按照cv从最高到最低的顺序绘制这些产品的散点图。
#generate reproducible example
id = c(1: 3)
date = seq(as.Date("2011-3-1"), as.Date("2011-6-8"), by="days")
id = rep(c(1,2,3,4),each=25)
set.seed(01)
id = sample(id)
price = rep(c(1:20), each = 5)
price = sample(price)
data = data.frame(date, id, price)
答案 0 :(得分:0)
您可以将prodid
转换为因子,并将因子类别的顺序设置为基于变异系数的大小。例如,让我们假设您的数据框带有cv值,称为cv
。然后,按prodid
:
cv
Roll50.last$prodid = factor(Roll50.last$prodid,
levels = cv$prodid[order(cv$cv, decreasing=TRUE)])
现在,当您绘制数据时,prodid
构面将按cv
的大小减小排序。