R_Language 板


LINE

※ 引述《sinclairJ (Jun)》之銘言: : 不好意思,又要來請教各位先進了 : 資料檔大概格式如下(均是類別型資料) : (實際資料約為200列乘500000行) : ---------------------------- : 序 Y X1 X2 X3 : 1 1 0 1 2 : 2 1 0 0 0 : 3 2 2 1 1 : 4 1 1 1 2 : 5 2 0 2 2 : 6 2 1 1 2 : 7 2 1 0 1 : 8 1 2 1 1 : 9 1 1 2 0 : 10 2 0 0 2 : ...... : ...... : ..... : ----------------------------- : 以下有幾個互相獨立的資料處理動作要請教各位: : (1)如表格所示,Y有兩種類別,X有三種類別,我想做的處理是比較Y的兩種類別,其他 : 們的X變數是否為同樣類別 : 舉例: Y X1 X2 X3 : 1 0 1 2 : 1 0 2 2 : 2 0 0 1 : 2 0 1 1 : 然後因為X1都一樣,所以我要把X1刪除,請問這個預處理該如何於R上實現? 假如該 data frame 叫 dt 好了。 dt <- data.frame( Y = c(1,1,2,2), X1 = c(0,0,0,0), X2 = c(1,2,0,1), X3 = c(2,2,1,1) ) 可以利用 length(table(dt$X1)) > 1 這個運算來測試 X1 是不是非全等。 懂這個技巧後,套用 apply(dt, 2, function(.){length(table(.))}) > 1 就可以知道哪些欄是要保留的欄位。 合起來寫就是 dt1 <- dt[, apply(dt, 2, function(.){length(table(.))}) > 1] dt1 為所求。 : (2)接下來我要對每個X變數做類似這樣的處理 : 舉例: X1 : 0 : 1 : 2 : 1 : 2 : 2 : 1 : 2 : 1 : 1 : 先找出最少的類別,其所佔的比例 : 如X1最少的類別是0,比例為1/10,1/10就是我想得到的,只是迴圈不太明白該怎麼寫 同樣舉例子給你。 dt2 <- data.frame( X1 = c(0,1,2,1,2,2,1,2,1,1), X2 = c(0,1,1,1,1,1,1,1,1,2), X3 = c(0,0,0,0,0,1,1,2,2,2) ) sort(table(dt2$X1))[1] / length(dt2$X1) 可以看出 0 佔 10% 最少。 所以,再套 apply(dt2, 2, function(.){sort(table(.))[1] / length(.)} ) 即為所求。 想看看是誰佔最少則使用 apply(dt2, 2, function(.){attr(sort(table(.))[1], "names")}) 不過,dt2$X2 中 0 和 2 都是最少者,但這個方法沒辦法知道。 : (3)X變數做C取2組合方式(兩兩相互)對Y做邏輯斯迴歸(這邊的X可轉成數值型資料來處 : 理) : 舉例 : Y X1 X2 X3 : 1 2 1 0 : 2 1 0 1 : 3 2 0 0 : 如果資料是上述這樣 : 我就要建立三條迴歸 : Y~X1+X2 : Y~X2+X3 : Y~X1+X3 : 之後把顯著(p<0.05)的X變數挑出來 Y 是 1,2,3... 怎麼做 logistic regression? 是不是請你再確定? 我建個資料用來示範: dt <- data.frame( Y = c(0,0,0,0,0,1,1,1), X1 = runif(8), X2 = runif(8), X3 = runif(8) ) n 球中抽出且不放回 k 球的所有組合可以用這個方式:combn(n, k) 因為你的 names(dt) 是 "Y" "X1" "X2" "X3", 那就是 3 球中抽 2 球,共有種情況: dt.x <- dt[, which(names(dt) != "Y")] mat <- combn(names(dt.x), 2) 最後再把 mat 拚成 formula 字串: str <- paste0("Y ~ ", apply(mat, 2, paste, sep = "", collapse = " + ")) 就生成三個 formula 前身字串。 最後要做 logistic regression: mod <- list() for(i in 1:length(str)){ mod[[i]] <- glm(as.formula(str[i]), data = dt, family = binomial) } lapply(mod, summary) : 希望各位先進能指導指導小弟 : 若問題描述還不夠清楚 : 我會再補充,先跟版上各位先進說聲謝謝了 -- http://apansharing.blogspot.com/ --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.77.34
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1429698574.A.64E.html
1F:推 celestialgod: 推詳細說明 04/22 18:51
2F:→ celestialgod: 我覺得他3的Y只是打錯,我用他上面的資料... 04/22 18:55
3F:推 sinclairJ: 阿阿Y打錯了沒錯,抱歉 04/22 19:34
4F:→ sinclairJ: 也謝謝兩位前輩指教 04/22 19:34
5F:→ andrew43: 因為你的資料不少,所以如果哪裡算不動記得回報一下。 04/23 11:34
6F:推 sinclairJ: 哈哈我已經先把大資料拆成數個小部分跑分析了,暫時還 04/24 09:23
7F:→ sinclairJ: 可以處理,謝謝你! 04/24 09:23







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP