0

我需要创建一个随时间推移的每月房价中位数的图。数据是随机顺序的,包括个别房屋的售价。

我已经将每日日期转换为每月并将值转换为数字列。但我无法计算每月的中位数。

below are the characteristics of the dataset.
  str(a)
'data.frame':   1411764 obs. of  2 variables:
 $ Date : Factor w/ 498 levels "1977-11","1978-06",..: 108 60 12 58 51 60 12 59 60 60 ...
$ Value: num  223000 171528 110269 172436 181512 ...
>head(a)    
    Date    Value
1  2003-01 223000.0
2  1999-01 171528.0
3  1992-01 110268.6
5  1998-11 172436.5
9  1998-04 181512.1
10 1999-01 197848.0
4

2 回答 2

2

如果您有大量数据,您会发现data.table此类操作非常有效。如果你不这样做,你仍然会发现它data.table非常有用——

library(data.table)
dt <- data.table(df)
dt[,list(medianvalue = median(Value)), by = "Date"]
于 2013-11-06T11:27:10.760 回答
1

我会用plyr这个。这样的事情应该让你得到一个data.frame每月的中位数:

library(plyr)
result_df = ddply(a, .(Date), summarize, median_value = median(Value))

plyr众所周知,对于较大的数据集来说有点慢,但我只想试试上面的代码。一个很好的替代方案是data.table,它提供大致相同的功能,但速度要快几个数量级。

于 2013-11-06T11:23:41.990 回答