【发布时间】:2018-03-08 10:13:53
【问题描述】:
我正在尝试对数据表中的变量对重复一组线性回归。我有三个自变量 y1、y2、y3 和 10 个解释变量 x1 到 x10。每个系列都缺少一些观察结果。
在下面的示例中,我想为每对 ys 和 xs 重复第二行命令。
d <- data.table(country=rep(c('a','b','c'),c(10,10,10)),y1=rnorm(30),y2=rnorm(30),x1=runif(30),x2=runif(30))
d[(!is.na(y1) & !is.na(x1)), .(beta1=summary(lm(y1~x1))$coefficients[2,1], p1=summary(lm(y1~x1))$coefficients[2,4]) ,by=country]
【问题讨论】:
-
你能
melt.data.table(d, id.vars = "country", measure.vars = patterns("x[0-9]", "y[0-9]"))运行相同的代码,但使用by = c("country", "variable")吗? -
谢谢休。我收到此错误: == c("country", "variable") 中的错误:比较 (1) 仅适用于原子类型和列表类型。我尝试了 d$country
-
只使用一个 = 就像您在问题中所做的那样
-
当然!谢谢 。有用 !如果可以的话,有什么快速的建议可以检索使用了哪个 x(从 1 到 10)和哪个 y(1 到 3)?比如带有“y1x1”、“y1x2”等的列?
-
不确定 - 您的问题表明它们的大小相同,因此
variable列将指定索引。
标签: r loops data.table lapply lm