作者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/cn.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