2012-09-04 40 views
0

所以...我有一個大型數據集,其中包含許多類別的變量。我想創建新的變量,將其中的一些類別歸爲一個。從很多類別生成一個虛擬變量

我可以用條件語句做到這一點,但考慮到類別的數量,我將永遠需要一次去一條線。另外,雖然我的原始變量是數字,但它們本身是隨機的,所以我不能使用邏輯或範圍語句。

如何基於許多特定值創建此條件變量?

我嘗試了以下,但沒有成功。以下是我想組合爲一個的不同類別的示例。

classes <- c(549,162,210,222,44,96,62,208,525,202,149,442,427, 
     564,423,106,422,546,205,560,127,536,34,261,568, 
     366,524,401,548,95,156,8,528, 430,527,556,203,554,523, 
     501,530,55,252,585,19,540,71,204,502,504, 196,436,48, 
     102,526,201,521,23,558,552,118,416,117,216,510,494, 
     516,544,518) 

所以這對我來說似乎很直觀,但它不起作用。

df$chem<- cbind(ifelse(df$class == classes ,1,0)) 

不用多說I'm一個初學者,這可能不是那麼難的事,但從來就一直在尋找解決這個特定的問題和我不能似乎找到它。我錯過了什麼?謝謝!

+0

可能重複http://stackoverflow.com/questions/9406289/automatic-dummy-variables- in-r) – mnel

+0

要問的一個好問題是爲什麼你想創建虛擬變量?對於很多事情,它會爲你創造它們。 – Dason

+0

OP不在尋找什麼? –

回答

5

您正在尋找%in%==

df$chem <- cbind(ifelse(df$class %in% classes ,1,0)) 

或使用邏輯到數字轉換

df$chem <- as.numeric(df$class %in% classes) 

如果你想單獨的虛擬變量所有的類別df$class那麼你可以使用class.ind功能在包nnet(它隨作爲推薦包)

library(nnet) 

class_ind <- class.ind(df$class) 
# add if you want to combine with the original 
df_ind <- do.call(cbind, list(df, class.ind(df$class)) 
[R中自動虛擬變量(的
+0

這個伎倆!謝謝!!我確實想爲所有類別創建假人,所以我會給nnet一個嘗試,聽起來像是有用的。 –

+0

謝謝,但請注意上面的@ Dason的評論。 – mnel

相關問題