您可以使用
quantmod包中的函数
方法从FRED获取 CPI 数据FRED
getSymbols
getSymbols("CPIAUCSL", src='FRED') #Consumer Price Index for All Urban Consumers: All Items
#[1] "CPIAUCSL"
tail(CPIAUCSL)
# CPIAUCSL
#2012-03-01 229.098
#2012-04-01 229.177
#2012-05-01 228.527
#2012-06-01 228.618
#2012-07-01 228.723
#2012-08-01 230.102
# make an `xts` object of prices
set.seed(1)
p <- xts(rnorm(63, mean=10, sd=3), seq(from=as.Date('1950-12-01'), by='years', length.out=63))
colnames(p) <- "price"
BLS的CPI 通胀计算器
...使用给定日历年的平均消费者价格指数...对于当年,使用最新的月度指数值。
(对于这个答案,我将忽略上述引用的第二部分......)
所以,计算一个年平均值
avg.cpi <- apply.yearly(CPIAUCSL, mean)
然后将所有指数水平除以基价以创建转换因子
cf <- avg.cpi/as.numeric(avg.cpi['2008']) #using 2008 as the base year
dat <- merge(p, cf, all=FALSE)
dat$adj <- dat[, 1] * dat[, 2]
tail(dat)
# price CPIAUCSL adj
#2006-12-01 8.898336 0.9363693 8.332128
#2007-12-01 6.867596 0.9632483 6.615200
#2008-12-01 11.709159 1.0000000 11.709159
#2009-12-01 9.594836 0.9967933 9.564069
#2010-12-01 17.204853 1.0131453 17.431015
#2011-12-01 9.882280 1.0449769 10.326754