1
假設我有以下data.frame:model.matrix與賦值
df=data.frame(cat=c("a","b","c"),y=c(1,2,3))
以類別的model.matrix
(貓),將它們轉換爲虛擬變量如下:
model.matrix(~0+cat,df)
cata catb catc
1 1 0 0
2 0 1 0
3 0 0 1
attr(,"assign")
[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$cat
[1] "contr.treatment"
然而,我希望將這些虛擬變量分配給df $ y中的值。我能想到的一個可能的解決方案是用y乘以行。
但是,我猜這有更好的目的建立功能?
因此,基本上,將虛擬變量轉換爲給定向量的最有效方法是什麼?
這_would_似乎是有目共睹的答案。人們不知道。 –
第一種方法會被認爲是更有效的方法。特別是考慮到沒有乘法運算? –
@Sachin_ruk如果您使用'library(data.table)'中的'dcast',它會更有效率。但是,您可以使用'library(microbenchmark)'在一個更大的數據集上進行基準測試,以查看哪一個是有效的。 – akrun