[英]Transforming Dataset with only 0 and 1 values
我不確定該怎么稱呼,所以我將盡力描述問題所在。 我有一個僅由0和1組成的數據框。因此,對於每個人,我不用一列具有因式值的列(例如,低價,4個房間)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21
1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0
2 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1
3 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0
4 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0
如何轉換R中的數據集,以便創建新列(房間數#)並為1(在第4列中)的位置賦予vhigh值? 我需要為此而准備的多個指數型自變量。 21列代表1000多個觀測值的6個變量。 應該是這樣的
PurchaseP. NumberofRooms ...
1. vhigh. 4
2. low. 4
3. vhigh. 1
4. vhigh. 2
只是在這里為前2個全功能變量做過,但基本上如此重復,每個功能變量具有3-4個可能的階乘值。
V1:V4 =購買價格,V5:V8 =房間數,V9:V11 =樓層,依此類推
在我腦海中這樣的事情可能會起作用
這行得通嗎,還是有一種更簡單的方法? 如何在R中對此進行編碼?
您可以使用功能which()類似於
lapply(df, function(x) { %now x is a row
idx = which(x == 1)[1]
return(idx)
})
有趣的部分是在每行上使用which(x ==1)
。 這將為您提供包含一個索引的所有索引的數組。 其中的第一個可以用於您的情況(假設每行只有一個1),否則,需要討論聚合。 然后,通過為各個索引指定一個合理的名稱,可以將結果列轉換為因子。
如果數據集每行包含一個1,這是一個非常簡單的問題
根據您的圖片在此處輸入您的數據(請修改您的問題以輸入代碼而不是圖片)
df = data.frame(r1 = 0, r2 = 1, r3 = 0)
rownames(df)<- 1
然后,您只需要將列數與房間號相加即可得出權重
df$room = df$r1*1 + df$r2 * 2 + df$r3 *3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.