我需要创建一个月平均房价随时间变化的情节。数据是随机排列的,包括个别房屋的售价。
我已将每日日期转换为每月,并将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
答案 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
,它提供了大致相同的功能,但速度提高了几个数量级。