一、R读文件
1、读文本文件数据
先配置事情目次,把文本文件放于该目次下
(配置事情目次的要领:选择R软件东西栏”文件”—->”改变事情目次”。发起在开始利用R软件时就选择事情目次)
x=read.table(“abc.txt”)
假如文件不在事情目次下,写路径并利用”\\”(一个\为转义字符),如:c:\\tmp\\abc.txt
> x=read.table("abc.txt") > x V1 V2 1 175 67 2 183 75 3 165 56 4 145 45 5 178 67 6 187 90 7 156 43 8 176 58 9 173 60 10 170 56
5、读剪切板
文本或Excel的数据均可通过剪贴板操纵
y <- read.table(“clipboard”,header=F)
header=F 暗示不读列头
> y <- read.table("clipboard",header=F) > y V1 V2 1 175 67 2 183 75 3 165 56 4 145 45 5 178 67 6 187 90 7 156 43 8 176 58 9 173 60 10 170 56 > z <- read.table("clipboard",header=T) > z 商品 价值 1 A 2 2 B 3 3 C 5 4 D 5
6、读Excel文件数据
要领1:先把excel另存为空格脱离的prn或”,”脱离的csv文本名目再读
w <- read.table(“test.prn”,header=T)
> w <- read.table("test.prn",header=T) > w 商品 价值 1 A 2 2 B 3 3 C 5 4 D 5 > q <- read.table("test.csv",header=T) > q 商品.价值 1 A,2 2 B,3 3 C,5 4 D,5 >
要领2:安装RODBC包,再通过ODBC读
library(RODBC)
z <- odbcConnectExcel(“text.xls”)
w <- SQLFetch(z,”Sheet1″)
二、综合性例子
模仿发生统计专业同学的名单(学号区分),记录数学阐明,线性代数,概率统计三
科后果,然后举办一些统计阐明。
1、模仿生成100名学生分数
> 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 >
利用seq()函数生成1-100个学号,代表100名学生。
> x1=round(runif(100,min=80,max=100)) > x1 [1] 99 90 81 83 89 99 80 89 98 97 88 81 96 96 85 98 89 92 [19] 82 82 84 98 95 91 91 94 87 80 95 91 83 91 93 88 96 85 [37] 90 80 97 94 100 97 91 89 85 96 93 96 89 94 96 90 81 91 [55] 99 82 83 93 89 91 81 95 81 90 81 85 100 89 81 89 83 81 [73] 87 92 97 82 80 86 89 88 87 89 86 83 82 92 89 88 97 82 [91] 84 95 81 88 88 98 82 92 90 99 >
runif()函数生成匀称漫衍函数,较大值100,最小值80,代表分数。
round()函数四舍五入取整。
> x2=round(rnorm(100,mean=80,sd=7)) > x2 [1] 71 82 76 85 67 84 84 83 75 74 66 91 87 76 76 83 81 78 76 91 87 92 80 89 [25] 75 76 78 77 79 84 80 89 90 69 78 89 85 76 90 77 78 79 82 87 87 68 78 79 [49] 79 83 76 79 63 87 84 76 85 89 69 74 85 81 83 76 84 76 81 70 79 84 93 90 [73] 83 88 86 87 93 82 75 71 75 69 79 86 77 75 88 83 81 84 93 78 75 89 79 79 [97] 84 82 88 70 >
rnorm()函数生成正态漫衍函数,总数100,均值为80,尺度差为7。代表另一科后果。
> x3=round(rnorm(100,mean=83,sd=18)) > x3 [1] 110 55 74 72 82 81 101 89 76 84 75 81 72 51 85 77 61 103 [19] 86 105 88 86 74 39 97 60 69 50 89 67 51 74 96 83 85 116 [37] 32 80 59 88 64 76 80 104 110 71 65 74 57 91 72 68 50 101 [55] 103 106 81 119 73 76 83 77 93 87 65 65 70 104 133 89 73 101 [73] 80 98 91 79 79 79 74 90 93 93 82 95 99 117 84 69 88 114 [91] 78 63 56 95 69 72 68 91 71 75 >
生成100个均值为83,尺度差为18的学科后果。
> x3[which(x3>100)]=100 > x3 [1] 100 55 74 72 82 81 100 89 76 84 75 81 72 51 85 77 61 100 [19] 86 100 88 86 74 39 97 60 69 50 89 67 51 74 96 83 85 100 [37] 32 80 59 88 64 76 80 100 100 71 65 74 57 91 72 68 50 100 [55] 100 100 81 100 73 76 83 77 93 87 65 65 70 100 100 89 73 100 [73] 80 98 91 79 79 79 74 90 93 93 82 95 99 100 84 69 88 100 [91] 78 63 56 95 69 72 68 91 71 75 >
#p#分页标题#e#
分数大于100的设为100。
> x=data.frame(num,x1,x2,x3) > x num x1 x2 x3 1 10378001 99 71 100 2 10378002 90 82 55 3 10378003 81 76 74 4 10378004 83 85 72 5 10378005 89 67 82 6 10378006 99 84 81 7 10378007 80 84 100 8 10378008 89 83 89 9 10378009 98 75 76 10 10378010 97 74 84 11 10378011 88 66 75 12 10378012 81 91 81 13 10378013 96 87 72 14 10378014 96 76 51 15 10378015 85 76 85 16 10378016 98 83 77 17 10378017 89 81 61 18 10378018 92 78 100 19 10378019 82 76 86 20 10378020 82 91 100 21 10378021 84 87 88 22 10378022 98 92 86 23 10378023 95 80 74 24 10378024 91 89 39 25 10378025 91 75 97 26 10378026 94 76 60 27 10378027 87 78 69 28 10378028 80 77 50 29 10378029 95 79 89 30 10378030 91 84 67 31 10378031 83 80 51 32 10378032 91 89 74 33 10378033 93 90 96 34 10378034 88 69 83 35 10378035 96 78 85 36 10378036 85 89 100 37 10378037 90 85 32 38 10378038 80 76 80 39 10378039 97 90 59 40 10378040 94 77 88 41 10378041 100 78 64 42 10378042 97 79 76 43 10378043 91 82 80 44 10378044 89 87 100 45 10378045 85 87 100 46 10378046 96 68 71 47 10378047 93 78 65 48 10378048 96 79 74 49 10378049 89 79 57 50 10378050 94 83 91 51 10378051 96 76 72 52 10378052 90 79 68 53 10378053 81 63 50 54 10378054 91 87 100 55 10378055 99 84 100 56 10378056 82 76 100 57 10378057 83 85 81 58 10378058 93 89 100 59 10378059 89 69 73 60 10378060 91 74 76 61 10378061 81 85 83 62 10378062 95 81 77 63 10378063 81 83 93 64 10378064 90 76 87 65 10378065 81 84 65 66 10378066 85 76 65 67 10378067 100 81 70 68 10378068 89 70 100 69 10378069 81 79 100 70 10378070 89 84 89 71 10378071 83 93 73 72 10378072 81 90 100 73 10378073 87 83 80 74 10378074 92 88 98 75 10378075 97 86 91 76 10378076 82 87 79 77 10378077 80 93 79 78 10378078 86 82 79 79 10378079 89 75 74 80 10378080 88 71 90 81 10378081 87 75 93 82 10378082 89 69 93 83 10378083 86 79 82 84 10378084 83 86 95 85 10378085 82 77 99 86 10378086 92 75 100 87 10378087 89 88 84 88 10378088 88 83 69 89 10378089 97 81 88 90 10378090 82 84 100 91 10378091 84 93 78 92 10378092 95 78 63 93 10378093 81 75 56 94 10378094 88 89 95 95 10378095 88 79 69 96 10378096 98 79 72 97 10378097 82 84 68 98 10378098 92 82 91 99 10378099 90 88 71 100 10378100 99 70 75 > write.table(x,"D:\\mark.txt",col.names=F,row.names=F,sep=" ") >
合成数据框并生存到硬盘。
data.frame()函数用于生成数据框。
write.table()将数据框写到文件中。col.names=F:不写列名;row.names=F:不写行名;sep=” “:用空格做脱离符。
2、计较各科平均分
利用函数:mean(),colMeans(),apply()
> mean(x) num x1 x2 x3 10378050.50 89.31 80.69 79.79 告诫信息: mean(<data.frame>) is deprecated. Use colMeans() or sapply(*, mean) instead. > colMeans(x) num x1 x2 x3 10378050.50 89.31 80.69 79.79 > colMeans(x)[c("x1","x2","x3")] x1 x2 x3 89.31 80.69 79.79 > apply(x,2,mean) num x1 x2 x3 10378050.50 89.31 80.69 79.79 >
colMeans():计较每列的平均值。
单用colMeans()将学号也做了平均值计较,colMeans(x)[c(“x1″,”x2″,”x3”)]只计较科目后果。
3、计较各科较高较低分
> apply(x,2,max) num x1 x2 x3 10378100 100 93 100 > apply(x,2,min) num x1 x2 x3 10378001 80 63 32 >
apply(x,2,mean)也用来计较平均值,第二个参数2代表计较每列,假如按行计较,则第二个参数为1。
apply(x,2,max)计较每列的较大值;apply(x,2,min)计较每列的最小值。
4、计较每人总分
> apply(x[c("x1","x2","x3")],1,sum) [1] 270 227 231 240 238 264 264 261 249 255 229 253 255 223 246 258 231 270 [19] 244 273 259 276 249 219 263 230 234 207 263 242 214 254 279 240 259 274 [37] 207 236 246 259 242 252 253 276 272 235 236 249 225 268 244 237 194 278 [55] 283 258 249 282 231 241 249 253 257 253 230 226 251 259 260 262 249 271 [73] 250 278 274 248 252 247 238 249 255 251 247 264 258 267 261 240 266 266 [91] 255 236 212 272 236 249 234 265 249 244 >
三、漫衍函数
#p#分页标题#e#
正态漫衍函数:rnorm()
泊松漫衍函数:rpois()
指数漫衍函数:rexp()
Gamma漫衍函数:rgamma()
匀称漫衍函数:runif()
二项漫衍函数:rbinom()
几许漫衍函数:rgeom()