使用R中的大型数据集绘制过去10年的中位房价

时间:2013-11-06 11:18:15

标签: r date dataframe subset median

我需要创建一个月平均房价随时间变化的情节。数据是随机排列的,包括个别房屋的售价。

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

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

2 个答案:

答案 0 :(得分:1)

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

library(data.table)
dt <- data.table(df)
dt[,list(medianvalue = median(Value)), by = "Date"]

答案 1 :(得分:0)

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

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

plyr对于较大的数据集来说有点慢,但我只是尝试上面的代码。一个非常好的替代方案是data.table,它提供了大致相同的功能,但速度提高了几个数量级。