我在R中运行GLM但是需要尝试一些没有一个因子年级的模型。
就像:
Year<-as.factor(c(1996,1997,1998,1999,2000))
Shr<-as.numeric(c(1,32,1,50,42))
#... and other variables.
如何从模型中“排除”1998年? 我需要从所有其他变量中获取整行,否则GLM将不会运行,因为行数不同。
答案 0 :(得分:3)
假设您的数据位于名为da.fr
的data.frame中,您可以使用
da.fr2<-da.fr[da.fr$Year!=1998,]
da.fr2$Year<-droplevels(da.fr2$Year)
第一行创建一个没有任何1998数据的新data.frame。第二行将删除1998年作为年份的因子,因为它不再在数据集中。
答案 1 :(得分:3)
更简单地说,您可以使用subset
的{{1}}参数:
glm()
答案 2 :(得分:1)
Year<-as.factor(c(1996,1997,1998,1999,2000))
Shr<-as.numeric(c(1,32,1,50,42))
dat <- data.frame(Year=Year, Shr = Shr) # your data
#> dat
# Year Shr
#1 1996 1
#2 1997 32
#3 1998 1
#4 1999 50
#5 2000 42
> levels(dat$Year)
#[1] "1996" "1997" "1998" "1999" "2000"
根据您想要达到的目标,您可以:
dat2 <- dat[!(dat$Year %in% "1998") , ] # remove rows with 1998
#> dat2
# Year Shr
#1 1996 1
#2 1997 32
#4 1999 50
#5 2000 42
levels(dat2$Year)
#[1] "1996" "1997" "1998" "1999" "2000" # the 1998 level remains
但你也可以:
dat2$Year <- factor(dat2$Year) # also remove the level if you want
levels(dat2$Year)
#[1] "1996" "1997" "1999" "2000"