第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

字符串變量中的虛擬變量

字符串變量中的虛擬變量

回首憶惘然 2019-11-02 13:31:48
我想從該數(shù)據(jù)集創(chuàng)建虛擬變量:DF<-structure(list(A = c(1, 2, 3, 4, 5), B = c("1,3,2", "2,1,3,6",   "3,2,5,1,7", "3,7,4,2,6,5", "4,10,7,3,5,6")), .Names = c("A", "B"),               row.names = c(NA, 5L), class = "data.frame")> DF  A                  B1 1              1,3,22 2            2,1,3,63 3          3,2,5,1,74 4        3,7,4,2,6,55 5       4,10,7,3,5,6所需的輸出應(yīng)如下所示:A  1  2  3  4  5  6  7  8  9  101  1  1  1  0  0  0  0  0  0  02  1  1  1  0  0  1  0  0  0  03  1  1  1  0  1  0  1  0  0  04  0  1  1  1  1  1  1  0  0  05  0  0  1  1  1  1  1  0  0  1有沒有一種有效的方法來做這種事情?我可以使用strsplit或ifelse。原始數(shù)據(jù)集非常大,有很多行(> 10k),列B中的值(> 15k)。dummy包中的功能dummies無法正常運(yùn)行。我也發(fā)現(xiàn)了類似的情況:將一列拆分為多列。但是在我的情況下,以上鏈接的解決方案確實(shí)工作緩慢(在Dell i7-2630QM,8Gb,Win7 64位,R 2.15.3 64位上,最多15分鐘)。預(yù)先感謝您的回答。
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

你可以用一種方法ifelse和strsplit(除非我誤解,你不希望使用他們?)是這樣的....


cols <- 1:max( as.numeric( unlist(strsplit(DF$B,","))))

df <- t(apply(DF["B"] , 1 , function(x) ifelse( cols %in% as.numeric( unlist( strsplit(x , ",") ) ) , 1 , 0 ) ) )


colnames(df) <- cols

df

#  1 2 3 4 5 6 7 8 9 10

#1 1 1 1 0 0 0 0 0 0  0

#2 1 1 1 0 0 1 0 0 0  0

#3 1 1 1 0 1 0 1 0 0  0

#4 0 1 1 1 1 1 1 0 0  0

#5 0 0 1 1 1 1 1 0 0  1

我們的想法是,我們?cè)谒璧牧兄蝎@得唯一值的向量,找到該max值并創(chuàng)建一個(gè)向量,1:max(value)然后將其應(yīng)用于每一行,以找出該行的哪些值在所有值的向量中。ifelse如果有的話,我們通常會(huì)放一個(gè)1,如果沒有的話,我們會(huì)放0。將vector在我們的比賽是一個(gè)序列,因此其輸出為準(zhǔn)備進(jìn)行排序。


查看完整回答
反對(duì) 回復(fù) 2019-11-02
  • 3 回答
  • 0 關(guān)注
  • 747 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)