R语言习题.docx

上传人:b****2 文档编号:1179246 上传时间:2022-10-18 格式:DOCX 页数:15 大小:241.39KB
下载 相关 举报
R语言习题.docx_第1页
第1页 / 共15页
R语言习题.docx_第2页
第2页 / 共15页
R语言习题.docx_第3页
第3页 / 共15页
R语言习题.docx_第4页
第4页 / 共15页
R语言习题.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

R语言习题.docx

《R语言习题.docx》由会员分享,可在线阅读,更多相关《R语言习题.docx(15页珍藏版)》请在冰豆网上搜索。

R语言习题.docx

R语言习题

一组学生参加了数学、科学和英语考试。

为了给所有的学生确定一个单一的成绩衡量指标,需要将这些科目的成绩组合起来。

另外,还想将前20%的学生评定为A,接下来20%的学生评定为B,以此类推。

最后,希望按字母顺序对学生排序。

Excel中的数据表

StuId

StuName

Math

Science

English

1

JohnDavis

502

95

25

2

AngelaWilliams

465

67

12

3

BullJones

621

78

22

4

CherylCushing

575

66

18

5

ReuvenYtzrhak

454

96

15

6

JoelKnox

634

89

30

7

MaryRayburn

576

78

37

8

GregEngland

421

56

12

9

BradTmac

599

68

22

10

TracyMcgrady

666

100

38

1:

输入数据——R语言导入xlsx

>install.packages("xlsx")

>library(xlsx)

>workbook<-"D:

/R/StuScore.xlsx"

>StuScore<-read.xlsx(workbook,1)

>StuScore

2:

数据预处理——将变量进行标准化

>options(digits=2)#限定为2位小数

>afterscale<-scale(StuScore[,3:

5])

>afterscale

MathScienceEnglish

[1,]-0.581.0400.20

[2,]-1.02-0.815-1.17

[3,]0.82-0.086-0.12

[4,]0.28-0.881-0.54

[5,]-1.151.106-0.86

[6,]0.980.6430.73

[7,]0.29-0.0861.47

[8,]-1.54-1.544-1.17

[9,]0.56-0.749-0.12

[10,]1.351.3721.57

attr(,"scaled:

center")

MathScienceEnglish

5517923

attr(,"scaled:

scale")

MathScienceEnglish

84.715.19.5

3:

通过函数mean()来计算各行的均值以及获得综合得分,并使用cbind()将其添加到花名册中

>#3在afterscale中计算标准差均值,并将其添加到StuScore

>score<-apply(afterscale,1,mean)#1表示行,mean表示均值函数

>StuScore<-cbind(StuScore,score)

>StuScore

StuIdStuNameMathScienceEnglishscore

11JohnDavis50295250.22

22AngelaWilliams4656712-1.00

33BullJones62178220.21

44CherylCushing5756618-0.38

55ReuvenYtzrhak4549615-0.30

66JoelKnox63489300.78

77MaryRayburn57678370.56

88GregEngland4215612-1.42

99BradTmac5996822-0.10

1010TracyMcgrady666100381.43

4:

函数quantile()给出学生综合得分的百分位数

quantile(x,probs):

求分位数,其中x为待求分位数的数值型向量,probs为一个由[0,1]之间的概率值组成的数值向量

>afterquantile<-quantile(score,c(.8,.6,.4,.2))

>afterquantile

80%60%40%20%

0.600.21-0.18-0.50

5:

使用逻辑运算符,把score转为等级(离散型)

>StuScore$grade[score>=afterquantile[1]]<-"A"

>StuScore$grade[score=afterquantile[2]]<-"B"

>StuScore$grade[score=afterquantile[3]]<-"C"

>StuScore$grade[score=afterquantile[4]]<-"D"

>StuScore$grade[score

>StuScore

StuIdStuNameMathScienceEnglishscoregrade

11JohnDavis50295250.22B

22AngelaWilliams4656712-1.00E

33BullJones62178220.21B

44CherylCushing5756618-0.38E

55ReuvenYtzrhak4549615-0.30E

66JoelKnox63489300.78B

77MaryRayburn57678370.56B

88GregEngland4215612-1.42E

99BradTmac5996822-0.10E

1010TracyMcgrady666100381.43B

6:

使用strsplit()以空格为界把学生姓名拆分为姓氏和名字

>StuScore$StuName<-as.character(StuScore$StuName)

>is.character(StuScore$StuName)

[1]TRUE

>name<-strsplit(StuScore$StuName,"")

>name

[[1]]

[1]"John""Davis"

[[2]]

[1]"Angela""Williams"

[[3]]

[1]"Bull""Jones"

[[4]]

[1]"Cheryl""Cushing"

[[5]]

[1]"Reuven""Ytzrhak"

[[6]]

[1]"Joel""Knox"

[[7]]

[1]"Mary""Rayburn"

[[8]]

[1]"Greg""England"

[[9]]

[1]"Brad""Tmac"

[[10]]

[1]"Tracy""Mcgrady"

7:

把name分成Firstname和LastName,加入到StuScore中

>FirstName<-sapply(name,"[",1)

>LastName<-sapply(name,"[",2)

>StuScore<-cbind(FirstName,LastName,StuScore[,-1])

>StuScore

FirstNameLastNameLastNameStuNameMathScienceEnglishscoregrade

1JohnDavisDavisJohnDavis50295250.22B

2AngelaWilliamsWilliamsAngelaWilliams4656712-1.00E

3BullJonesJonesBullJones62178220.21B

4CherylCushingCushingCherylCushing5756618-0.38E

5ReuvenYtzrhakYtzrhakReuvenYtzrhak4549615-0.30E

6JoelKnoxKnoxJoelKnox63489300.78B

7MaryRayburnRayburnMaryRayburn57678370.56B

8GregEnglandEnglandGregEngland4215612-1.42E

9BradTmacTmacBradTmac5996822-0.10E

10TracyMcgradyMcgradyTracyMcgrady666100381.43B

8:

order排序

>StuScore[order(LastName,FirstName),]

FirstNameLastNameLastNameStuNameMathScienceEnglishscoregrade

4CherylCushingCushingCherylCushing5756618-0.38E

1JohnDavisDavisJohnDavis50295250.22B

8GregEnglandEnglandGregEngland4215612-1.42E

3BullJonesJonesBullJones62178220.21B

6JoelKnoxKnoxJoelKnox63489300.78B

10TracyMcgradyMcgradyTracyMcgrady666100381.43B

7MaryRayburnRayburnMaryRayburn57678370.56B

9BradTmacTmacBradTmac5996822-0.10E

2AngelaWilliamsWilliamsAngelaWilliams4656712-1.00E

5ReuvenYtzrhakYtzrhakReuvenYtzrhak4549615-0.30E

9:

为StuScore绘制分组条形图

install.packages("vcd")

library(vcd)

fill_colors<-c()#不同的等级,不同的颜色显示

for(iin1:

length(StuScore$Science))

{

if(StuScore$Science[i]==100)

{

fill_colors<-c(fill_colors,"red")

}

elseif(StuScore$Science[i]<100&&StuScore$Science[i]>=80)

{

fill_colors<-c(fill_colors,"yellow")

}

elseif(StuScore$Science[i]<80&&StuScore$Science[i]>=60)

{

fill_colors<-c(fill_colors,"blue")

}else{

fill_colors<-c(fill_colors,"green

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1