R_Language 板


LINE

[軟體程式類別]:R [程式問題]:for迴圈不知道怎麼寫比較好? [軟體熟悉度]:新手 [問題敘述]: 我想問的是: 如果希望整欄的資料做多次合併,有辦法用迴圈寫嗎? 現在有一個問卷資料,題項有22欄,是由7個系共185位同學填寫 資料形態如下: https://imgur.com/a/6gJdq (每個題項一共有185筆資料、共23個題項、7個系的同學填答) 這題是複選題,我必須要統計出每個系回答題項的數目分布 1.要第1欄 (系所) + 第2欄 (題項1) = 1組資料 以此類推...一共有22組資料 2.將22組資料合併,就可以統計出每個系的題項分布,於是我用圖法煉鋼方式寫了如 (1) 但重點來了,我要問的就是: 有辦法用迴圈寫嗎? 但我用for迴圈寫如下面 (2), 因為沒寫過整組資料的合併,不知道問題出在那? 可以幫我看一下嗎? (1) 圖法煉鋼 (確實可以正確合併,但花時間) #data名稱是data31 #1使用cbind合併... r1 =cbind(data31[,1],data31[,2]) r2 =cbind(data31[,1],data31[,3]) r3 =cbind(data31[,1],data31[,4]) ..... r22 =cbind(data31[,1],data31[,23]) #2使用rbind合併,得到最後的rf大矩陣 rf = rbind(r1,r2,r3...r22) (2) for迴圈 : 遇到問題 n = 22 r22 = matrix() for (i in 1:n) { ri = cbind(data31[,1],data31[,i+1]) } r22 因為這個是要把整組資料做合併,並非一個一個,所以我明知道迴圈有 問題,確不知道怎麼改? 可以指點我一下嗎? 我知道要給定一個矩陣讓迴圈儲存 可是我有22組,該怎麼存起來? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.231.179
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1515229432.A.E9C.html
1F:→ clansoda: 有點看不懂,你們複選題這邊不用boolean vector來存嗎? 01/06 17:11
2F:→ askpeople: 樓上大大是說我的題項嗎? 01/06 17:15
3F:→ askpeople: 不知道你指的是否是我的迴圈中的儲存r22嗎? 01/06 17:16
4F:→ clansoda: 我是指分析的時候,你們都是中文的話可能會沒那麼好做 01/06 17:21
5F:→ clansoda: 如果用boolean vector存複選題的題項會比較好分析 01/06 17:21
6F:→ askpeople: 喔喔 了解了,你的意思是要我把中文欄位改掉囉? 01/06 17:26
7F:→ clansoda: 你的這種存法會有很多空格吧,到時候要分析的時候 01/06 17:26
8F:→ clansoda: 會困難重重,除非你只想知道總數或比例之類的 01/06 17:27
9F:→ askpeople: 然後選項儘量不要用中文 01/06 17:27
10F:→ askpeople: 我目前只是要統計出每個系在每個選項的數目分布而已 01/06 17:28
11F:→ clansoda: 例如說你有一個複選題有20個選項 你就把column設成 01/06 17:28
12F:→ askpeople: 這篇文章的重點就是迴圈寫法不知怎麼改 01/06 17:28
13F:→ clansoda: 2-1, 2-2 ..... 2-20 01/06 17:28
14F:→ askpeople: 好,我會參考你說的 感謝 01/06 17:29
15F:→ celestialgod: R的stack不就可以直接完成嗎.... 01/06 19:01
16F:推 celestialgod: 或是reshape2,data.table的melt 01/06 19:02
17F:→ askpeople: 對於r沒很熟悉 所以套件不太清楚@@ 我去研究一下 01/06 20:56
18F:推 clsmbstu: reshape2::melt(data31, "系所") 01/07 01:08
19F:→ askpeople: 很感謝上面的幾位大大指點指令與套件 01/07 11:29
20F:→ askpeople: 如果說我想練習迴圈,也是有辦法寫嗎? 01/07 11:29
21F:→ clsmbstu: 我想問題是出在 ri = cbind(data31[,1],data31[,i+1]) 01/07 12:54
22F:→ clsmbstu: R會以為你要把每次cbind的結果都存到叫"ri"的東西 01/07 12:55
23F:→ clsmbstu: assign(paste0("r",i),cbind(data31[,1],data31[,i+1])) 01/07 12:58
24F:→ clsmbstu: 這樣寫才會每次把結果存進不同的variable 之後才能操弄 01/07 12:59
25F:→ clsmbstu: 不過等你學會lapply等function以後 應該會更喜歡把這些 01/07 12:59
26F:→ clsmbstu: 類似格式的資料(例如rXX)全部整理進一個list 更方便 01/07 13:00
27F:→ askpeople: 之後我想把產生的r1,...r22合併 嘗試用以下寫法: 01/10 12:14
28F:→ askpeople: r = paste0("r",1:22) 然後lapply(r, rbind) 01/10 12:14
29F:→ askpeople: 現在是希望把r1..r22塞到cbind裡面,可想不出好的方式 01/10 12:16
30F:→ askpeople: 我自己已經用melt處理過,但想增強寫迴圈的能力 (Orz) 01/10 12:16
31F:→ celestialgod: 能不用迴圈就不要用迴圈... 01/10 18:33
32F:→ celestialgod: 而且你好像沒分清楚變數名稱跟字串差異= = 01/10 18:33
33F:→ askpeople: 我用paste0這樣,發現變成字串"r1"..所以不知道怎麼辦 01/11 09:31
34F:→ askpeople: 而assign我了解了一下,知道是給變數一個數值 01/11 09:33







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燈, 水草

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

TOP