我有一个看似相当简单的问题,但我无法找到解决方案。
我有一个拥有57个国家的数据框架,其国内生产总值超过20年(共计1140次观察)。我想在每个国家/地区的mFilter软件包中应用HP Filter,然后将每个结果保存为新变量。像这样:
df <- read.csv("QNA_26062015181325399.csv")
usa <- subset(df, Country == "United States", select = c("TIME", "Value") )
usa.filtered <- hpfilter(usa$Value, type = "lambda", freq = 1600))
问题是我需要为每个国家重复此程序。我可以自动执行此过程而无需键入相同的代码57次吗?
答案 0 :(得分:1)
您可以按国家/地区拆分数据并使用该功能
lapply(split(df[,c("TIME", "Value")], df$Country),
function(x) hpfilter(x$Value, type = "lambda", freq = 1600)
)
答案 1 :(得分:0)
如果您想使用plyr
,请尝试:
library("plyr")
f = function(x) {
hpfilter(x$Value, type = "lambda", freq = 1600)
}
dlply(df[, c("TIME", "Value", "Country")], .(Country), f)
答案 2 :(得分:0)
这是一个plyr
解决方案:
library("plyr")
hpList <- dlply(df, .(Country), function(x) hpfilter(x$Value, type = "lambda", freq = 1600))
或者,您可以先拆分数据然后再处理它:
countryData <- dlply(df, .(Country), `[` , j = c("TIME", "Value"))
hpList <- llply(countryData, function(x) hpfilter(x$Value, type = "lambda", freq = 1600))