一个综合性实例(来自炼数成金)
模拟产生统计专业同学的名单(学号区分),记录数学分析,线性代数,概率统计三科成绩,然后进行一些统计分析
先简单介绍几个函数:
正态分布函数rnorm()
泊送分布函数rpois()
指数分布函数rexp()
Gamma分数函数rgamma()
均匀分布函数runif()
二项分布函数rbinom()
几何分布函数rgeom()
1 建立学生名单
> num<-seq(10378001,10378100)
> num
[1] 10378001 10378002 10378003 10378004 10378005 10378006 10378007 10378008
[9] 10378009 10378010 10378011 10378012 10378013 10378014 10378015 10378016
[17] 10378017 10378018 10378019 10378020 10378021 10378022 10378023 10378024
[25] 10378025 10378026 10378027 10378028 10378029 10378030 10378031 10378032
[33] 10378033 10378034 10378035 10378036 10378037 10378038 10378039 10378040
[41] 10378041 10378042 10378043 10378044 10378045 10378046 10378047 10378048
[49] 10378049 10378050 10378051 10378052 10378053 10378054 10378055 10378056
[57] 10378057 10378058 10378059 10378060 10378061 10378062 10378063 10378064
[65] 10378065 10378066 10378067 10378068 10378069 10378070 10378071 10378072
[73] 10378073 10378074 10378075 10378076 10378077 10378078 10378079 10378080
[81] 10378081 10378082 10378083 10378084 10378085 10378086 10378087 10378088
[89] 10378089 10378090 10378091 10378092 10378093 10378094 10378095 10378096
[97] 10378097 10378098 10378099 10378100
2 模拟成绩
模拟数学分析成绩
> x1<-round(runif(100,min=80,max=100))#80到100分之间均匀分布,然后四舍五入
> x1
[1] 83 95 81 100 87 85 94 89 91 91 83 85 99 98 82 81 80 96
[19] 82 95 84 85 85 84 98 87 91 99 87 84 91 84 84 81 96 95
[37] 97 94 88 89 82 99 86 93 100 93 83 90 99 92 94 88 94 81
[55] 90 81 86 83 93 93 100 88 87 94 85 85 94 97 92 87 86 89
[73] 90 87 80 97 83 94 87 81 83 84 97 91 92 98 93 83 80 97
[91] 91 82 91 89 86 85 90 90 94 87
模拟线性代数成绩
> x2<-round(rnorm(100,mean=80,sd=7))#产生100个正态分布,平均值是80,标准差是7,然后四舍五入
> x2
[1] 74 89 87 79 83 75 77 79 72 96 86 86 79 79 75 72 73 80
[19] 85 87 73 77 75 82 79 81 84 78 68 73 90 79 79 87 78 71
[37] 70 84 75 97 84 74 85 78 78 83 70 75 78 75 81 82 83 75
[55] 73 81 82 75 73 81 78 100 77 77 83 79 80 82 80 76 79 78
[73] 79 73 78 74 77 69 78 85 77 74 80 77 84 81 79 86 66 80
[91] 93 75 87 79 73 78 77 86 78 86
模拟概率统计成绩
> x3<-round(rnorm(100,mean=83,sd=18))#产生100个正态分布,平均值是83,标准差是18,然后四舍五入
> x3
[1] 68 88 113 89 98 82 101 74 76 115 82 63 114 73 88 92 103 65
[19] 77 89 79 73 101 85 97 100 108 52 50 78 90 83 80 120 107 92
[37] 75 73 119 47 85 94 49 74 126 79 95 90 76 120 74 71 119 57
[55] 89 83 78 113 73 53 101 83 78 91 88 77 87 78 92 80 106 106
[73] 67 65 64 98 59 98 56 69 51 100 69 67 72 79 83 89 93 67
[91] 116 100 71 86 65 59 84 79 53 71
> x3[which(x3>100)]=100#对产生的值中超过100的改写成100
> x3
[1] 68 88 100 89 98 82 100 74 76 100 82 63 100 73 88 92 100 65
[19] 77 89 79 73 100 85 97 100 100 52 50 78 90 83 80 100 100 92
[37] 75 73 100 47 85 94 49 74 100 79 95 90 76 100 74 71 100 57
[55] 89 83 78 100 73 53 100 83 78 91 88 77 87 78 92 80 100 100
[73] 67 65 64 98 59 98 56 69 51 100 69 67 72 79 83 89 93 67
[91] 100 100 71 86 65 59 84 79 53 71
3 合成数据框并保存到硬盘
合成数据框
> x<-data.frame(num,x1,x2,x3)
> x
num x1 x2 x3
1 10378001 83 74 68
2 10378002 95 89 88
3 10378003 81 87 100
4 10378004 100 79 89
5 10378005 87 83 98
6 10378006 85 75 82
7 10378007 94 77 100
8 10378008 89 79 74
9 10378009 91 72 76
10 10378010 91 96 100
11 10378011 83 86 82
12 10378012 85 86 63
13 10378013 99 79 100
14 10378014 98 79 73
15 10378015 82 75 88
16 10378016 81 72 92
17 10378017 80 73 100<