2017-02-25 26 views
-1

我的數據框中有1000多列。我想對所有變量運行線性迴歸,並且不想一一寫出它們。當我嘗試這一點,如何在某些列是不同類時對所有變量運行線性迴歸

lm(goal ~ ., data = df) 

我得到這個錯誤:

Error in contrasts<- (*tmp* , value = contr.funs[1 + isOF[nn]]) : contrasts can be applied only to factors with 2 or more levels

我有一個字符類,要素,數字等我猜我應該刪除是不可能的變量列列。我該怎麼做呢?

+3

這似乎是說,要傳遞到迴歸因子變量的一個只有一個級別違規的變量。於是找到它,並省略它它。你可以通過'sapply(d [sapply(d,is.factor)],nlevels)'找到這些。尋找具有一個級別的人 – user20650

+1

這似乎是一種非常懶惰的態度。 –

+0

不懶好嗎?我們不應該總是懶得去做其他活動的時間嗎?我其實應該寫出1000多個變量。我正計劃去3000多個變量。爲什麼我會浪費時間寫出來? – user6452857

回答

2

您可以排除與減法-操作

lm(goal ~ . - var, data = df) 
+0

而要查找以這種方式移除的一組列,您應該檢查只有一個值的列。對於數字,它可以被描述爲零方差,但可能是數字和因子類型的混合。像'which(sapply(df,function(x)length(unique(x)))== 1)'應該讓你刪除列索引。 – vincentmajor

相關問題