我有一個R數據框,其中包含一個我想要「展開」的因子,因此對於每個因子級別,都有一個關聯列一個新的數據框,其中包含一個1/0指示符。例如,假設我有:將R因子自動擴展爲每個因子水平的1/0指示變量的集合
df.original <-data.frame(eggs = c("foo", "foo", "bar", "bar"), ham = c(1,2,3,4))
我想:
df.desired <- data.frame(foo = c(1,1,0,0), bar=c(0,0,1,1), ham=c(1,2,3,4))
因爲對於某些分析的,你需要有一個完全的數字數據幀(例如,主成分分析),我認爲這個功能可能是內置的。編寫一個函數來做到這一點不應該太難,但我可以預見與列名有關的一些挑戰,如果已經存在,我寧願使用它。
我可以補充一點,這個方法比使用`cast`快得多。 – 2013-12-08 15:03:25
@RyanChase,在您發表評論和我注意到它回覆的14小時內,您可能看過幫助頁面?公式「,並在詳細信息部分的第2段中找到答案。或者你可以嘗試使用和不使用「-1」的代碼,並比較輸出以查看效果。但我想你對我更有耐心。 「-1」指定不適合截距(還有其他方式),因此可以爲每個等級創建指標變量,而不是基於對比度的差異。 – 2015-09-26 19:52:26
@GregSnow我回顧了'?formula`和`?model.matrix`的第二段,但它不清楚(可能只是因爲我缺乏矩陣代數和模型表達方面的知識深度)。挖掘更多之後,我已經能夠認識到-1只是指定不包含「截取」列。如果忽略-1,則會在輸出中看到一個1的截取列,其中一個二進制列被省略。您可以根據其他列的值爲0的行來查看省略列的值是1。文件看起來很神祕 - 還有另一個很好的資源嗎? – 2015-10-05 22:25:56