作者omit18 (胖海)
看板R_Language
標題[問題] 數據重新分組
時間Thu Apr 5 15:11:35 2018
[問題類型]:
程式諮詢
其實也是作業,只是遇到瓶頸,想求救
[軟體熟悉度]:
超級新手
[問題敘述]:
需要將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://webptt.com/m.aspx?n=bbs/R_Language/M.1522912297.A.FC5.html
1F:→ clansoda: Hi,因為是作業,所以我不直接告訴你怎麼做 04/05 16:07
2F:→ clansoda: 我想findInterval跟table可以給你一點方向 04/05 16:07
3F:推 Edster: cut, hist 也可以. 古人用法. 04/05 18:20
4F:→ 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
5F:→ clansoda: set right = FALSE 04/08 22:57
6F:→ clansoda: 建議你要使用任何function之前都先把documentation看完 04/08 22:57
7F:→ cywhale: cut有right參數吧...設為FALSE 應該就不會重疊?... 04/08 23:01