1.1 题目如下

R语言与统计计算期末考试复习题_统计学

R语言与统计计算期末考试复习题_统计学_02

(1)基础数据录入:

> income<-c("低收入户","中等偏下户","中等收入户","中等偏上户","高收入户")
> year2016<-c(3750,7338,10508,14823,28225)
> year2017<-c(4647,9330,13506,19404,36957)
> year2018<-c(6545,12674,18277,26044,49175)
> year2019<-c(8004,17024,24832,35576,67132)
> year2020<-c(10422,21636,31685,45639,85541)

错误1:

> table1<-data.frame(收入户等级=income,2016年=year2016,2017年=year2017,2018年=year2018,2019年=year2019,2020年=year2020)
Error: unexpected symbol in "table1<-data.frame(收入户等级=income,2016年"

原因是系统无法识别数字字符,于是我给带有数字的字符加上引号就出现了错误2:

> table1<-data.frame(收入户等级=income,"2016年"=year2016,"2017年"=year2017,"2018年"=year2018,"2019年"=year2019,"2020年"=year2020)
> table1
  收入户等级 X2016年 X2017年 X2018年 X2019年 X2020年
1   低收入户    3750    4647    6545    8004   10422
2 中等偏下户    7338    9330   12674   17024   21636
3 中等收入户   10508   13506   18277   24832   31685
4 中等偏上户   14823   19404   26044   35576   45639
5   高收入户   28225   36957   49175   67132   85541

每个数字前面都自动添加了X

解决方式:在末尾加上check.names=F

> table1<-data.frame(收入户等级=income,"2016年"=year2016,"2017年"=year2017,"2018年"=year2018,"2019年"=year2019,"2020年"=year2020,check.names=F)
> table1
  收入户等级 2016年 2017年 2018年 2019年 2020年
1   低收入户   3750   4647   6545   8004  10422
2 中等偏下户   7338   9330  12674  17024  21636
3 中等收入户  10508  13506  18277  24832  31685
4 中等偏上户  14823  19404  26044  35576  45639
5   高收入户  28225  36957  49175  67132  85541

然后保存为csv格式(保存路径要用/而不是\),完整代码为:

>income<-c("低收入户","中等偏下户","中等收入户","中等偏上户","高收入户")
> year2016<-c(3750,7338,10508,14823,28225)
> year2017<-c(4647,9330,13506,19404,36957)
> year2018<-c(6545,12674,18277,26044,49175)
> year2019<-c(8004,17024,24832,35576,67132)
> year2020<-c(10422,21636,31685,45639,85541)
> table1<-data.frame(收入户等级=income,"2016年"=year2016,"2017年"=year2017,"2018年"=year2018,"2019年"=year2019,"2020年"=year2020,check.names=F)
> table1
  收入户等级 2016年 2017年 2018年 2019年 2020年
1   低收入户   3750   4647   6545   8004  10422
2 中等偏下户   7338   9330  12674  17024  21636
3 中等收入户  10508  13506  18277  24832  31685
4 中等偏上户  14823  19404  26044  35576  45639
5   高收入户  28225  36957  49175  67132  85541
>write.csv(table1,file="D:/作业/统计学R/table.csv")

(2)相关理解见注释,完整代码为:

> mat<-as.matrix(table1[,2:6])  #将table1中的第2到第6列转换成矩阵mat
> rownames(mat)=table1[,1]      #矩阵的行名为table1第1列的名称
> mat
           2016年 2017年 2018年 2019年 2020年
低收入户     3750   4647   6545   8004  10422
中等偏下户   7338   9330  12674  17024  21636
中等收入户  10508  13506  18277  24832  31685
中等偏上户  14823  19404  26044  35576  45639
高收入户    28225  36957  49175  67132  85541

(3)相关理解见注释,完整代码为:

>install.packages("reshape2")  #下载reshape2包
> library(reshape2)            #加载reshape2包
> tab.long<-melt(table1,id.vars="收入户等级",variable.name="年份",value.name="收入")
#转换成长格式,id.vars为变量,variable.name为变量名,value.name为数值名
> tab.long
   收入户等级   年份  收入
1    低收入户 2016年  3750
2  中等偏下户 2016年  7338
3  中等收入户 2016年 10508
4  中等偏上户 2016年 14823
5    高收入户 2016年 28225
6    低收入户 2017年  4647
7  中等偏下户 2017年  9330
8  中等收入户 2017年 13506
9  中等偏上户 2017年 19404
10   高收入户 2017年 36957
11   低收入户 2018年  6545
12 中等偏下户 2018年 12674
13 中等收入户 2018年 18277
14 中等偏上户 2018年 26044
15   高收入户 2018年 49175
16   低收入户 2019年  8004
17 中等偏下户 2019年 17024
18 中等收入户 2019年 24832
19 中等偏上户 2019年 35576
20   高收入户 2019年 67132
21   低收入户 2020年 10422
22 中等偏下户 2020年 21636
23 中等收入户 2020年 31685
24 中等偏上户 2020年 45639
25   高收入户 2020年 85541

1.2 题目如下

R语言与统计计算期末考试复习题_随机数_03

完整代码如下:

> set.seed(123)    #设定随机数种子
> mat<-matrix(rnorm(n=20,mean=0,sd=1),nrow=4,ncol=5,byrow=TRUE)
#rnorm()生成20个标准正态分布随机数,n代表数字个数,mean代表均值,sd代表标准差,matrix生成矩阵
> mat
           [,1]       [,2]       [,3]        [,4]       [,5]
[1,] -0.5604756 -0.2301775  1.5587083  0.07050839  0.1292877
[2,]  1.7150650  0.4609162 -1.2650612 -0.68685285 -0.4456620
[3,]  1.2240818  0.3598138  0.4007715  0.11068272 -0.5558411
[4,]  1.7869131  0.4978505 -1.9666172  0.70135590 -0.4727914
> set.seed(123)
> mat<-matrix(rnorm(n=20,mean=0,sd=1),nrow=5,ncol=4,byrow=TRUE)
> mat
           [,1]       [,2]       [,3]        [,4]
[1,] -0.5604756 -0.2301775  1.5587083  0.07050839
[2,]  0.1292877  1.7150650  0.4609162 -1.26506123
[3,] -0.6868529 -0.4456620  1.2240818  0.35981383
[4,]  0.4007715  0.1106827 -0.5558411  1.78691314
[5,]  0.4978505 -1.9666172  0.7013559 -0.47279141

 1.3 题目如下

R语言与统计计算期末考试复习题_统计学_04

 (1)相关理解见注释,完整代码为:

> Titanic<-read.csv("D:/作业/统计学R/TitanicCases.csv") #读取csv数据
> attach(Titanic)
> table2<-table(Sex,Survived) #生成二维列联表
> table2
        Survived
Sex        No  Yes
  Female  126  344
  Male   1364  367
> addmargins(table2) #加上边际和
        Survived
Sex        No  Yes  Sum
  Female  126  344  470
  Male   1364  367 1731
  Sum    1490  711 2201

 (2)相关理解见注释,完整代码为:

> table3<-ftable(Titanic,row.vars=c("Class","Sex","Age"),col.vars="Survived")
#生成多维列联表,row.vars为行变量,col.vars为列变量
> table3
                   Survived  No Yes
Class Sex    Age                   
1st   Female Adult            4 140
             Child            0   1
      Male   Adult          118  57
             Child            0   5
2nd   Female Adult           13  80
             Child            0  13
      Male   Adult          154  14
             Child            0  11
3rd   Female Adult           89  76
             Child           17  14
      Male   Adult          387  75
             Child           35  13
Crew  Female Adult            3  20
             Child            0   0
      Male   Adult          670 192
             Child            0   0

 (3)相关理解见注释,完整代码为:

> df<-as.data.frame(table3)  #将列联表转化成带有类别频数的数据框
> df
   Class    Sex   Age Survived Freq
1    1st Female Adult       No    4
2    2nd Female Adult       No   13
3    3rd Female Adult       No   89
4   Crew Female Adult       No    3
5    1st   Male Adult       No  118
6    2nd   Male Adult       No  154
7    3rd   Male Adult       No  387
8   Crew   Male Adult       No  670
9    1st Female Child       No    0
10   2nd Female Child       No    0
11   3rd Female Child       No   17
12  Crew Female Child       No    0
13   1st   Male Child       No    0
14   2nd   Male Child       No    0
15   3rd   Male Child       No   35
16  Crew   Male Child       No    0
17   1st Female Adult      Yes  140
18   2nd Female Adult      Yes   80
19   3rd Female Adult      Yes   76
20  Crew Female Adult      Yes   20
21   1st   Male Adult      Yes   57
22   2nd   Male Adult      Yes   14
23   3rd   Male Adult      Yes   75
24  Crew   Male Adult      Yes  192
25   1st Female Child      Yes    1
26   2nd Female Child      Yes   13
27   3rd Female Child      Yes   14
28  Crew Female Child      Yes    0
29   1st   Male Child      Yes    5
30   2nd   Male Child      Yes   11
31   3rd   Male Child      Yes   13
32  Crew   Male Child      Yes    0

1.4 题目如下

R语言与统计计算期末考试复习题_随机数_05

 完整代码如下:

> library(DescTools)  #加载频数分布表所在包
> set.seed(123)       #设置随机数种子
> table4<-Freq(rnorm(n=1000,mean=200,sd=10),breaks=c(170,180,190,200,210,220,230,240),right=FALSE)
#生成频数分布表,breaks设置组距,不含上限值
> table4
       level  freq   perc  cumfreq  cumperc
1  [170,180)    19   1.9%       19     1.9%
2  [180,190)   146  14.6%      165    16.5%
3  [190,200)   330  33.0%      495    49.5%
4  [200,210)   348  34.8%      843    84.3%
5  [210,220)   129  12.9%      972    97.2%
6  [220,230)    27   2.7%      999    99.9%
7  [230,240]     1   0.1%    1'000   100.0%