看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢 其實也是作業,只是遇到瓶頸,想求救 [軟體熟悉度]: 超級新手 [問題敘述]: 需要將50000筆隨機的分數重新分組成(0級分-5級分) set.seed(15) x<-runif(50000,min=0,max=100) 這是題目 [程式範例]: 我自己的想法是這樣 for(i in 1:length(x)) { if((x[i]>=0)&(x[i]<=59)) {print("0") }else if ((x[i]>=60)&(x[i]<=69)) {print("1") }else if ((x[i]>=70)&(x[i]<=79)) {print("2") }else if ((x[i]>=80)&(x[i]<=84)) {print("3") }else if ((x[i]>=85)&(x[i]<=89)) {print("4") }else if ((x[i]>=90)&(x[i]<=100)) {print("5")} } 這樣跑下去, 的確會重新將每個數字重新分類, 但有沒有語法是能夠幫助我統計 0級分有幾個、1級分有幾個, 我試過length("0"),但應該是錯誤的... 先謝謝各位大大了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.228.206 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1522912297.A.FC5.html
clansoda: Hi,因為是作業,所以我不直接告訴你怎麼做 04/05 16:07
clansoda: 我想findInterval跟table可以給你一點方向 04/05 16:07
Edster: cut, hist 也可以. 古人用法. 04/05 18:20
omit18: 謝謝各位大大 我看一下這幾個語法怎麼用 04/05 20:21
謝謝大大的提示, 我試著用 table(cut(x,c(0,60,70,80,85,90,100),c(0,1,2,3,4,5))) 來跑, 果然簡潔很多, 但我有個疑問, 就是在分數的區間裡面, 我們本來是定義0-59為0級分, 60-69為1級分, 70-79為2級分, 80-84為3級分, 85-89為4級分, 90-100為5級分。 但用cut的話, 就會變成0-60為0, 60-70為1, 那這個重疊的60分系統會怎麼判斷呢? 因為我把次數分配表加起來也沒有剛好50000筆資料, 請問是正常的嗎? 謝謝大大們 ※ 編輯: omit18 (36.230.226.248), 04/08/2018 21:59:51
clansoda: set right = FALSE 04/08 22:57
clansoda: 建議你要使用任何function之前都先把documentation看完 04/08 22:57
cywhale: cut有right參數吧...設為FALSE 應該就不會重疊?... 04/08 23:01