У меня есть набор данных под названием 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
Я хочу, чтобы запустить цикл, чтобы провести glm
анализ для каждого отдельного rte
(46001,46002, 46003). В пределах каждого rte
существует множество year
с, и все они должны быть включены в анализ glm
. Из теста каждого из маршрутов glm
я беру наклон и создаю еще одну таблицу с маршрутом и наклоном в виде столбцов. Это то, что я хочу, чтобы это выглядело как:
rte slope
46001 x
46002 y
46003 z
Вот для кода петли я придумал:
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
Может кто-нибудь, пожалуйста, помогите указать, где я его испортил?
Вам нужно удалить цитаты вокруг 'i' из' data <-subset (bjmd, rte == 'i') '. В настоящее время вы подмножите значения, равные символьной строке '' i''. – Thomas