如何使用因子子集()?

时间:2013-11-21 13:21:24

标签: r subset glm

我在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将不会运行,因为行数不同。

3 个答案:

答案 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"