2016-07-15 8 views
1

ファクタが2レベル未満かどうかに基づいて式からタームを削除したいと考えています。2レベル未満の場合の式からのドロップファクタ

私の設定では、データのサブセットごとに同じロジットモデルを多数実行したいと考えています。問題は、一部のサブセットでは、一部の要因では1つの値しか取れないことです。ここ

は一例であり:

depvar <- sample(0:1, 100, replace=T) 
bin1 <- rep(1, 100) 
cont1 <- rnorm(100) 
df <- data.frame(depvar=depvar, bin1=bin1, cont1=cont1) 
formla <- as.formula("depvar ~ bin1 + cont1") 
logit.reg <- glm(formla, data=df, family=binomial(link=logit)) 

私はそれが唯一の値をとるときに何とか自動的 式からbin1をドロップできるようにしたいです。

+0

入れこのようなものは、as.formula(paste0( "depvar〜"、if(length(levels(bin1)) "bin1 +" else ""、cont1 "))'のようになります。ここで、 'bin1'は連続変数であるため、レベルはありませんが、' bin1 = as.factor(bin1) 'で変更することができます。 – FisherDisinformation

答えて

1

十分です/他の場合には、単純なように私には思える:BIN1はあなたの例では要因ではないことを

if(length(unique(df$bin)) > 1) { 
    formla <- as.formula("depvar ~ bin1 + cont1") 
} else { 
    formla <- as.formula("depvar ~ cont1") 
} 

注(1かかわらずにそれを強制するためにas.factor()を使用することができます)

+0

hehは基本的に同じことですが、5行で – FisherDisinformation

関連する問題