【发布时间】:2013-03-02 19:52:10
【问题描述】:
我有一个名为 bjmd 的数据集,看起来像这样(简化):
rte year y obs
22037 46001 1 0 1
22042 46001 2 4 3
22047 46001 3 5 3
22202 46002 1 11 1
22207 46002 2 14 1
22212 46002 3 6 1
22140 46003 1 5 6
22141 46003 2 2 6
22142 46003 3 6 6
我想运行一个循环来对每个不同的 rte (46001,46002, 46003) 进行 glm 分析。在每个rte 中,有多个years,它们都需要包含在glm 分析中。从每条路线的glm 测试中,我正在使用坡度并创建另一个表格,其中路线和坡度作为列。这就是我想要的样子:
rte slope
46001 x
46002 y
46003 z
这是我想出的for循环代码:
route<-with(bjmd,unique(rte))
slope<-with(bjmd,numeric(length(unique(rte))))
table<-data.frame(route,slope)
for (i in unique(as.factor(bjmd$rte))) {
data<-subset(bjmd, rte=='i')
slope[i] <- coef(summary(glm(y ~ year+obs,
family = poisson(link=log),data=data)))[2,1]
table[i,2] <-paste(slope[i])
})
table
这段代码有问题,因为我的斜率一直为 0:
route slope
1 46001 0
2 46002 0
3 46003 0
有人可以帮忙指出我在哪里搞砸了吗?
【问题讨论】:
-
您需要从
data<-subset(bjmd, rte=='i')中删除i周围的引号。目前,您正在对等于字符串'i'的值进行子集化。