ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

R语言--数据处理案例(标准化、合并、排序等)

2021-07-04 14:03:27  阅读:300  来源: 互联网

标签:解释 roster -- grade score 拆分 数据处理 排序


1 数据处理案例

(1)数据输入

student<-c("John Davis","Angla williams","Bullwink Moose",

           "David Jones","Janice Markhammer","cheryl Cushing",

           "Revenen Ytzrhak","Greg Knox","Joel England",

           "Mary Rayburn")

math<-c(502,600,412,358,495,512,410,625,573,522)

science<-c(95,99,80,82,75,85,80,95,89,86)

english<-c(25,22,18,15,20,28,15,30,27,18)

roster<-data.frame(student,math,science,english,stringsAsFactors = F)

解释:roster是数据框名字,stringsAsFactors = F 设置字符串不拆开,即名字中间可以有空格

(2)限定小数位数

options(digits = 2)  #有效数最小保留2位

(3)成绩标准化  scale()

 x<-scale(roster[,2:4])

解释:标准化之后,让所有的成绩具有可比性

 

(4)求平均分

score<-apply(x,1,mean)

解释:按行求均值:apply() ,参数设置为1

roster<-cbind(roster,score)

解释:把求出的平均分这一列合并到原来的表roster中,由于不用主键,可以直接使用cbind()来合并

 

(5)求分位数

y<-quantile(roster$score,c(0.8,0.6,0.4,0.2))

解释:求四个分位点,分别在0.8,0.6,0.4,0.2处

 

(6)按分位数给成绩评定等级

roster$grade[score>=y[1]]<-"A"

roster$grade[score<y[1] & score>=y[2]] <-"B"

roster$grade[score<y[2] & score>=y[3]] <-"C"

roster$grade[score<y[3] & score>=y[4]] <-"D"

roster$grade[score<y[4]] <-"F"

解释:新增加一列grade,根据标准化之后的平均分和四个分位点来划分等级

 

(7)拆分first name和last name

 name<-strsplit((roster$student)," ")

解释:拆分字符串使用strsplit,第一个参数roster$student是要拆分的对象,第二个参数(空格“ ”)是指定按照什么来拆分

 

(8)把拆分后的名字放回数据集  

firstname<-sapply(name, "[",1)  #提取第一个对象

lastname<-sapply(name, "[",2)  #提取第二个对象

解释:拆分之后生成的是一个列表,可以使用函数sapply来提取拆分后的名字,”[” 表示要提取一个对象(元素),1代表提取第一个对象

roster<-cbind(firstname,lastname,roster[,-1])

解释:cbind()是合并对象的,roster[,-1]意思是保留行并且删掉第1列(负号代表去除)

 

(9)按lastname排序

 roster<-roster[order(lastname,firstname),]

解释:order()排序函数,order(lastname,firstname)先按lastname,再按firstname排序, , 逗号前面是按行排行排序,逗号后面是按列(因为姓氏和名不能拆开,所以按行排序)

 

 

标签:解释,roster,--,grade,score,拆分,数据处理,排序
来源: https://www.cnblogs.com/YY-zhang/p/14968825.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有