我想对不同的国家(即我的数据的子集)进行相同的回归。我确实想出了如何在 R 中做,但是在 Stata 中更轻松地做同样的事情之后,我想知道在 R 中是否有更好的方法。
在 Stata 中,你会做这样的事情:
foreach country in USA UK France {
reg y x1 x2 if country == "`country'"
}
简单易读,对吧?在 R 中,我提出了 split 和 ddply 方法,两者都比较复杂。使用split
data.subset <- split(data, data$country)[c("USA", "UK", "France")]
res <- lapply(data.subset, function(subset) lm(y ~ x1 + x2, data=subset))
更紧凑的代码将使用ddply
. 但在这种情况下,该模型将适用于所有国家/地区。我可以选择几个吗?
ddply(data, "country", function(df) coefficients(lm(Y~X1+X2, data=df)))
但同样,我很想知道在 Stata 中是否有一个直观、可读的 for 循环?