1

我正在尝试绘制随时间变化的车辆价格。我想包括注册。没有车辆作为迷你图的标记。我的数据如下所示:

> head (x[c(1,2,3,4)])
   samp.date      idx price  reg.date
1 2012-11-15  xxxxxxb  27490  2010-3-1
2 2012-11-15  yyyyxxm  28990  2010-9-1
3 2012-11-15  zzzzzxxv 25980  2010-9-1
4 2012-11-15  aaaaaz   31995  2011-1-1
5 2012-11-15  aaaaaar  33995  2011-3-1
6 2012-11-15  aaaaxxc  30980  2011-3-1

对于任何给定的 idx,可能有许多示例日期 (samp.date),价格可能上涨也可能下跌。所以,我想我想使用最后一个采样日期和该采样日期的价格(+/- 一些软糖因素)来标记 ggplot 线,使用 geom_text。但是,我似乎无法提取正确的坐标。我认为 ddply (来自 plyr)是正确的工具,我认为我正在取得一些进展:

ddply (x, .(idx), function (x) { return (c(tail(x$samp.date, 1), as.numeric (tail (x$price, 1))))})

但这会将 x$price 值强制为日期:

          idx         V1         V2
 1    aaaaaau 2013-05-19 2082-03-24
 2    abbbbbb 2013-05-19 2082-03-24
 3    accccco 2013-03-17 2054-11-06
 4    adddddo 2013-05-19 2068-07-15

可能我可以使用 V2 作为 y 坐标,但如果它是一个数字,而不是一个日期,我会感觉更快乐。ddply 的函数必须返回矩阵而不是 data.frame 的问题吗?如果是这样,我如何为返回的不同维度获取不同的类?

我可以像这样或其他方式返回不同的类型/类吗?

4

1 回答 1

0

中的函数ddply可能会返回一个数据帧。事实上,这是推荐的做法:

ddply(x, .(idx), function (x) { 
        data.frame(date=tail(x$samp.date, 1),
                   price=as.numeric(tail(x$price, 1)))
      })
于 2013-05-29T20:23:10.223 回答