我有一个由 2 个变量组成的 data.frame,每个变量有 250 万个 obs。
str(values)
data.frame': 2529905 obs. of 2 variables:
$ Date : Factor w/ 498 levels "1977-11","1978-06",..: 108 60 12 108 58 108 132 188 51 60 ...
$ Value: num 223000 171528 110269 426000 172436 ...
> head(values)
Date Value
1 2003-01 223000.0
2 1999-01 171528.0
3 1992-01 110268.6
4 2003-01 426000.0
5 1998-11 172436.5
6 2003-01 334000.0
我想用每个日期的中位数制作一个 data.frame:
library(plyr)
medianperdate = ddply(values, .(Date), summarize, median_value = median(Value))
> str(medianperdate)
'data.frame': 498 obs. of 2 variables:
$ Date : Factor w/ 498 levels "1977-11","1978-06",..: 1 2 3 4 5 6 7 8 9 10 ...
$ median_value: num 106638 84948 85084 75725 88487 ...
> head(medianperdate)
Date median_value
1 1977-11 106638.35
2 1978-06 84947.65
3 1985-07 85083.79
4 1986-05 75724.58
5 1986-11 88487.14
6 1986-12 98697.20
但我想要的是一个额外的列,它计算每月的观察次数(例如 2003-01,使用的数据将是对象“值”
还有一个额外的专栏,我在其中定义了它是哪个班级:
a : < 200 000
b : < 300 000 & > 200 000
c : < 300 000 & > 2000000
我将继续尝试这个,但因为我已经被困了几个小时,我将非常感谢帮助!
如果不清楚,我可以理解。以下 testdataframe 展示了我希望我的数据框看起来如何
> testdf
Year MedianValue HouseClass #Observations
1 1999-1 200000 B 501
2 1999-2 150000 A 664
3 1999-3 250000 C 555