全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3021 12
2017-11-12
原来数据大概这样的:
[[1]]
   ID class score
1   1     1    44
2   2     1    53
3   3     1    90
.
.
.
[[4]]
     ID class score
204 204     4     0
205 205     4    84
206 206     4    80
207 207     4    61
208 208     4    52
209 209     4    63
210 210     4    49

然后我是想#以60,70,85为界,将成绩分为“优秀”、“中等”、“及格”、“不及格”四类
写了下面这个

for(i in 1:4)
{
classn[]$score[which(classn[]$score<60)]<-"不及格"
classn[
]$score[which(classn[]$score>=60&classn[]$score<70)]<-"及格"
classn[
]$score[which(classn[]$score>=70&classn[]$score<85)]<-"中等"
classn[
]$score[which(classn[]$score>=85)]<-"优秀"
}
classn

但是结果会出错  全部都显示优秀
[[1]]
   ID class score
1   1     1  优秀
2   2     1  优秀
3   3     1  优秀
4   4     1  优秀
5   5     1  优秀
6   6     1  优秀
7   7     1  优秀
8   8     1  优秀
9   9     1  优秀
10 10     1  优秀
11 11     1  优秀
12 12     1  优秀
13 13     1  优秀

一直想不通什么原因
把那些代码稍微改下
classn[
][which(classn[]$score<60),3]<-"不及格"
也还是全部显示优秀

观察结果,有一两个score=100的数据没有赋值"优秀"
于是修改 classn[
][which(classn[]$score>=85&classn[]$score<=100),3]<-"优秀"
结果发现所有score数据都已赋值  但是也还是只有"不及格""优秀"  两项 就是赋值也是乱的


1.尝试删除了赋值优秀那一行代码,结果显示又正常了

2.确定没有输入法错误

求R大神帮下忙,谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-11-12 02:49:30
不知道为什么我这里显示好像出错了

那些代码应该都是  classn[[i]]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-12 10:03:27
复制代码


尽量少使用循环,R里面有lapply,sapply这样的函数,可以对列表里的每一个data.frame进行操作的。你试试上面的score_level函数。
sub_df是数据框
sub_df$score_level是新建一列,名叫score_level
代码里可能因为$符号显示问题和下划线问题把sub_df和score_level显示错了,你理解一下就可以了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-12 18:15:16
jiangbeilu 发表于 2017-11-12 10:03
尽量少使用循环,R里面有lapply,sapply这样的函数,可以对列表里的每一个data.frame进行操作的。你试试 ...
我试了一下 你的代码是把全年级的"不及格 “及格” "“中等” “优秀”的人数统计起来了
但是我想要的结果是 在数据里显示各学生成绩的level 如下:
[[1]]
   ID class  score
1   1     1 不及格
2   2     1 不及格
3   3     1     90
4   4     1    100
5   5     1     86
6   6     1     89
7   7     1 不及格
8   8     1    100
9   9     1     98
10 10     1     99
11 11     1   中等


PS:
R语言小白一个  由于刚刚学没多久 刚学到程序控制结构  所以就用for循环了
我想知道一个是for循环在这里为什么不行  另一个是遇到这些问题一般应该从哪方面思考出错的地方
再问一下 R语言的包实在太多了 我想请问下在以后的学习中  应该怎么 或者说哪里可以 系统地了解一些安装包以及其作用和用法?谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-12 20:15:39
XXXjl 发表于 2017-11-12 18:15
我试了一下 你的代码是把全年级的"不及格 “及格” "“中等” “优秀”的人数统计起来了
但是我想要的结 ...
截图.png
这个结果不可能统计人数的呃,你再确认一下代码有没有误
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-12 21:30:13
jiangbeilu 发表于 2017-11-12 20:15
这个结果不可能统计人数的呃,你再确认一下代码有没有误
之前搞错了  你这样的确可以 会另外产生一列score_level 在旁边对应每个分数
但是我想替换掉原来的分数的话是把函数里面的   _level  删去吗?
这样的话为什么它还是会只是显示优秀的?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群