R语言习题Word格式文档下载.docx
《R语言习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《R语言习题Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
22
4
CherylCushing
575
66
18
5
ReuvenYtzrhak
454
96
15
6
JoelKnox
634
89
30
7
MaryRayburn
576
37
8
GregEngland
421
56
9
BradTmac
599
68
10
TracyMcgrady
666
100
38
1:
输入数据——R语言导入xlsx
>
install.packages("
xlsx"
)
library(xlsx)
workbook<
-"
D:
/R/StuScore.xlsx"
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[1]&
&
score>
=afterquantile[2]]<
B"
afterquantile[2]&
=afterquantile[3]]<
C"
afterquantile[3]&
=afterquantile[4]]<
D"
afterquantile[4]]<
E"
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]]
Angela"
Williams"
[[3]]
Bull"
Jones"
[[4]]
Cheryl"
Cushing"
[[5]]
Reuven"
Ytzrhak"
[[6]]
Joel"
Knox"
[[7]]
Mary"
Rayburn"
[[8]]
Greg"
England"
[[9]]
Brad"
Tmac"
[[10]]
Tracy"
Mcgrady"
7:
把name分成Firstname和LastName,加入到StuScore中
FirstName<
-sapply(name,"
["
1)
LastName<
2)
-cbind(FirstName,LastName,StuScore[,-1])
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),]
1JohnDavisDavisJohnDavis50295250.22B
8GregEnglandEnglandGregEngland4215612-1.42E
6JoelKnoxKnoxJoelKnox63489300.78B
7MaryRayburnRayburnMaryRayburn57678370.56B
9BradTmacTmacBradTmac5996822-0.10E
2AngelaWilliamsWilliamsAngelaWilliams4656712-1.00E
9:
为StuScore绘制分组条形图
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)
yellow"
}
80&
=60)
blue"
}else{
green"
barplot(StuScore$Science,#条形图
main="
ScienceScore"
xlab="
Name"
ylab="
ScienceScore"
col=fill_colors,
names.arg=(paste(substr(FirstName,1,1),"
."
LastName)),#设定横坐标名称
border=NA,#条形框不设置边界线
font.main=4,
font.lab=3,
beside=TRUE)
legend(x=8.8,y=100,#左上角点的坐标
cex=.8,#缩放比例
inset=5,
c("
Excellent"
"
Good"
Ordinary"
Bad"
),
pch=c(15,16,17,19),#图例中的符号
col=c("
),
bg="
#821122"
#背景色
xpd=TRUE,#可以在绘图区之外显示
tex