实验目的:
实验内容:
1.)随机产生一个包含10个元素的整型向量x,将其逆序赋值给向量y。
> x<-trunc(runif(10,10,20))
> x
[1] 19 18 10 11 11 18 19 15 15 15
> y<-x[length(x):1]
> y
[1] 15 15 15 19 18 11 11 10 18 19

2.)用函数data.frame()创建一个数据框,第1列名为letters,包含a-h这8个字母,第2列名为numbers,包含1-8数字。
> df<-data.frame(letters=letters[1:8],numbers=c(1:8))
> df
letters numbers
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
7 g 7
8 h 8

3.) 生成一个列表,包含26个字母,数字0-9,和因子1-3
> ls<-list(letters,0:9,factor(1:3))
> ls
[[1]]
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
[[2]]
[1] 0 1 2 3 4 5 6 7 8 9
[[3]]
[1] 1 2 3
Levels: 1 2 3

4.) 生成如下矩阵

> x<-matrix(1:40,10,4,byrow = TRUE)
> rownames(x)<-LETTERS[1:10]
> colnames(x)<-paste("sub",1:4,sep = "")
> x
sub1 sub2 sub3 sub4
A 1 2 3 4
B 5 6 7 8
C 9 10 11 12
D 13 14 15 16
E 17 18 19 20
F 21 22 23 24
G 25 26 27 28
H 29 30 31 32
I 33 34 35 36
J 37 38 39 40

5.) 加载R的基础数据集iris,用write.csv()函数把数据集保存到一个csv文件中。
> write.csv(iris,file = "E:/R语言/作业/iris.csv")

6.) 对数据集mtcars中的汽车重量wt按照从高到低的顺序进行排序。
> sort(mtcars$wt,decreasing = TRUE)
[1] 5.424 5.345 5.250 4.070 3.845 3.840 3.780 3.730 3.570 3.570 3.520 3.460 3.440 3.440 3.440 3.435 3.215
[18] 3.190 3.170 3.150 2.875 2.780 2.770 2.620 2.465 2.320 2.200 2.140 1.935 1.835 1.615 1.513

7.) 随机生成10个50以内的自然数,使用order函数获取元素的索引在排序后的位置。
> x<-trunc(runif(10,0,50))
> x
[1] 39 32 37 8 46 5 15 33 28 12
> order(x)
[1] 6 4 10 7 9 2 8 3 1 5

8.) 设定随机数种子,随机产生10个20以内的自然数,使用rank函数求其秩排序值。
> set.seed(1234)
> x<-trunc(runif(10,0,20))
> x
[1] 2 12 12 12 17 12 0 4 13 10
> rank(x,ties.method ="average" )
[1] 2.0 6.5 6.5 6.5 10.0 6.5 1.0 3.0 9.0 4.0

9.) 加载R的基础数据集iris,用write.csv()把数据集保存到一个CSV文件中。
a) 使用excel修改文件,把某些属性改为NA。
b) 导入刚才保存的文件到一个新的数据框newdata1
c) 统计新数据框中缺失值的个数
d) 对含有缺失值的行进行处理后,形成另外新的数据框newdata2(即不再包含缺失值)
e) 对newdata1中的缺失值赋值为0,形成新的数据框newdata3
> newdata1<-read.csv("E:/R语言/作业/iris - 副本.csv")
> num<-sum(is.na(newdata1))
> newdata2<-na.omit(newdata1)
> newdata1[is.na(newdata1)]<-0
> newdata3<-newdata1




10.) 综合实验:(基本数据管理)
a. 首先创建如下图所示的数据框worker
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HARILpcs-1663482602887)(C:/Users/THUNOE~1/AppData/Local/Temp/ksohtml10408/wps1.jpg)]
其中:
代码实现:
> id<-paste("BH",1:5,sep = "")
> province<-c("Hebei","Henan","Shandong","Shanxi","Guizhou")
> gender<-c("F","M","F","M","F")
> age<-trunc(runif(5,25,60))
> salary1<-trunc(runif(5,4000,8000))
> salary2<-trunc(runif(5,1500,3000))
> worker<-data.frame(id,province,gender,age,salary1,salary2)
> worker
id province gender age salary1 salary2
1 BH1 Hebei F 27 5680 2351
2 BH2 Henan M 25 7652 1834
3 BH3 Shandong F 29 4152 1722
4 BH4 Shanxi M 36 4481 2191
5 BH5 Guizhou F 26 5153 1823

b. 创建新变量
通过创建新变量方法,得到如下新的数据框(增加一列sum)

> worker$sum<-worker$salary1+worker$salary2
> worker
id province gender age salary1 salary2 sum
1 BH1 Hebei F 27 5680 2351 8031
2 BH2 Henan M 25 7652 1834 9486
3 BH3 Shandong F 29 4152 1722 5874
4 BH4 Shanxi M 36 4481 2191 6672
5 BH5 Guizhou F 26 5153 1823 6976

c. 变量的重编码
对年龄字段进行重编码,将age中年龄<30的重编码为Young,年龄>=30 and 年龄<40的重编码为Middle,年龄>=40的重编码为elder,结果如下图所示

> x<-worker$age
> worker$age<-ifelse(x<30,"young",ifelse(x>=30 & x<40,"middle","elder"))
> worker
id province gender age salary1 salary2 sum
1 BH1 Hebei F young 5680 2351 8031
2 BH2 Henan M young 7652 1834 9486
3 BH3 Shandong F young 4152 1722 5874
4 BH4 Shanxi M middle 4481 2191 6672
5 BH5 Guizhou F young 5153 1823 6976

d. 数据排序,可以使用order()函数对数据框进行排序,默认为升序,在排序变量前加一个减号,可以降序排列
按照salary1变量对worker升序排列,结果放在newdata1中
> newdata1<-worker[order(worker$salary1),]
> newdata1
id province gender age salary1 salary2 sum
3 BH3 Shandong F young 4152 1722 5874
4 BH4 Shanxi M middle 4481 2191 6672
5 BH5 Guizhou F young 5153 1823 6976
1 BH1 Hebei F young 5680 2351 8031
2 BH2 Henan M young 7652 1834 9486

按照salary2变量对worker降序排列,结果放在newdata2中
> newdata2<-worker[order(-worker$salary2),]
> newdata2
id province gender age salary1 salary2 sum
1 BH1 Hebei F young 5680 2351 8031
4 BH4 Shanxi M middle 4481 2191 6672
2 BH2 Henan M young 7652 1834 9486
5 BH5 Guizhou F young 5153 1823 6976
3 BH3 Shandong F young 4152 1722 5874

e. 从数据框中选取特定子集
使用subset()提取出女性数据,结果放在newdata3中
> newdata3<-subset(worker,worker$gender=="F")
> newdata3
id province gender age salary1 salary2 sum
1 BH1 Hebei F young 5680 2351 8031
3 BH3 Shandong F young 4152 1722 5874
5 BH5 Guizhou F young 5153 1823 6976

11.)完成11.1.5气泡图的代码实现,将图形截图,并给出结论。
attach(mtcars)
r<-sqrt(disp/pi)
symbols(wt,mpg,circles = r,inches = 0.30,
fg="white",bg="lightblue",
main = "Bubble Plot with point size proportional to displacement",
ylab = "Miles Per Gallon",
xlab = "Weight of Car(1bs/1000)")
text(wt,mpg,rownames(mtcars),cex=0.6)
detach(mtcars)

随着每加仑汽油所行驶里程的增加,车重和发动机排量都逐渐减少。
12.) 绘制如下分组条形图:(附:matlab代码)(选做)

%paper8 ranking of eight methods on the best values, the mean values and
%the worst values
x1=[1.91 0.41 0.98 3.97 2.70 2.72]; % AE of best values
x2=[3.08 0.90 1.23 5.63 4.81 4.75 ]; % AE of mean values
x3=[4.81 1.75 1.48 7.49 8.29 8.09]; % AE of worst values
y=[x1',x2',x3'];
p=bar(y');
set(gca,'xticklabel',{'AE of best profit','AE of mean profit','AE of worst profit'});
ylabel('AE value (Average Error)');
xlabel('The performance comparison of six methods ');
legend(p(1:3),'MS','SLMS','MMVO','location','best');
ah=axes('position',get(gca,'position'),...
'visible','off');
legend(ah,p(4:6),'BGSA','BHTPSO','BHTPSO-QI','location','best');
x1<-c(1.91,0.41,0.98,3.97,2.70,2.72)#AE of best values
x2<-c(3.08,0.90,1.23,5.63,4.81,4.75)
x3<-c(4.81,1.75,1.48,7.49,8.29,8.09)
y<-cbind(x1,x2,x3)
colnames(y)<-c('AE of best profit','AE of mean profit','AE of worst profit')
rownames(y)<-c('MS','SLMS','MMVO','BGSA','BHTPSO','BHTPSO-QI')
barplot(y,
xlab = "The performance comparison of six methods",
ylab = "AE value (Average Error)",
col = c("#332b81","#0a75df","#07a5c0","#7ac078","#efba41","#fcf909"),
legend.text = rownames(y),
beside = TRUE)
