R语言学习
一、
R編輯器下載地址:https://cran.r-project.org/mirrors.html
安裝教程:
其余皆默認(rèn)安裝,i7以下的系統(tǒng)都選擇32-bit安裝就可以
R自學(xué)(各個(gè)包的詳細(xì)描述):https://mirrors.tuna.tsinghua.edu.cn/CRAN/
二、R語言數(shù)據(jù)的存儲結(jié)構(gòu)
1.向量
#向量的兩種表示方法 xiangliang1=c(1,2,3,4)#默認(rèn)是列向量(用行顯示是為了方便),c是連接函數(shù) xiangliang1 #結(jié)果:[1] 1 2 3 4 xiangliang2=5:8#返回的是5到8的一個(gè)整型向量 xiangliang2 #結(jié)果:[1] 5 6 7 8 #索引 xiangliang1[2] #取出第二個(gè)向量 結(jié)果:2 xiangliang1[c(2,3)]#取出第二三個(gè)向量 結(jié)果:2,3#xiangliang1[2,3] 錯(cuò)誤,只能用上述方法 #注:向量和標(biāo)量做運(yùn)算(加減乘除)時(shí),要把標(biāo)量循環(huán)補(bǔ)齊 xiangliang2>5#結(jié)果:[1] FALSE TRUE TRUE TRUE 注:邏輯向量 xiangliang2[xiangliang2>5]#結(jié)果:[1] 6 7 8 注:邏輯值為True就取出相應(yīng)位置的元素 xiangliang2+5#結(jié)果:[1] 10 11 12 13 xiangliang2[2:4]#結(jié)果: [1] 6 7 8 取出第二到四的元素 xiangliang2[c(2,3,4)]#上式的另一種方法 #seq(a,b,(length=5))生成一個(gè)最小值為a,最大值為b,長度為n的等差數(shù)列。注意該數(shù)列是向量(seq函數(shù)輸出格式為向量) dengcha1=seq(1,10,length=5)#生成一個(gè)1到10的等差數(shù)列,長度為5 dengcha1 #結(jié)果:[1] 1.00 3.25 5.50 7.75 10.00 dengcha2=seq(12,20,by=2)#步長為2 dengcha2 #查看函數(shù)用法(彈出解釋界面) ?seq ?c2.矩陣
x=matrix(1:9,3,3)#按照列的順序,生成3*3的矩陣 x結(jié)果是:
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 View Code y=matrix(1:9,3,3,byrow=T)#按照行的順序,生成3*3的矩陣 y結(jié)果是:
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 View Code x=matrix(1:9,3,3)#按照列的順序,生成3*3的矩陣 x y=matrix(1:9,3,3,byrow=T)#按照行的順序,生成3*3的矩陣 y x[,1]#取出矩陣第一列 [1] 1 2 3 x[1,]#取出矩陣第一行 [1] 1 4 7 x[1:2,]#取出矩陣第一二行 # [,1] [,2] [,3] #[1,] 1 4 7 #[2,] 2 5 8 x[3,2]#取出矩陣第三行第二列元素 [1] 63.數(shù)據(jù)框:形式上和矩陣是一樣的
data.frame(3:5,6:8)結(jié)果是:
X3.5 X6.8 1 3 6 2 4 7 3 5 8 View Code x=data.frame(a=2:11,b=3:12)#每行叫做一個(gè)樣本(觀測),每列叫做變量 x結(jié)果是:
a b 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10 9 10 11 10 11 12 View Code x[9,]#取出數(shù)據(jù)框第九行 # a b #9 10 11 x[,1]#取出數(shù)據(jù)框的第一列 [1] 2 3 4 5 6 7 8 9 10 11 x$a#上式的另一種方法 [1] 2 3 4 5 6 7 8 9 10 11 cars#速度與剎車距離組成的數(shù)據(jù)框(50個(gè)樣本) speed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10 7 10 18 8 10 26 9 10 34 10 11 17 11 11 28 12 12 14 13 12 20 14 12 24 15 12 28 16 13 26 17 13 34 18 13 34 19 13 46 20 14 26 21 14 36 22 14 60 23 14 80 24 15 20 25 15 26 26 15 54 27 16 32 28 16 40 29 17 32 30 17 40 31 17 50 32 18 42 33 18 56 34 18 76 35 18 84 36 19 36 37 19 46 38 19 68 39 20 32 40 20 48 41 20 52 42 20 56 43 20 64 44 22 66 45 23 54 46 24 70 47 24 92 48 24 93 49 24 120 50 25 85 View Code iris#鳶尾花組成的數(shù)據(jù)框(150個(gè)樣本) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa 11 5.4 3.7 1.5 0.2 setosa 12 4.8 3.4 1.6 0.2 setosa 13 4.8 3.0 1.4 0.1 setosa 14 4.3 3.0 1.1 0.1 setosa 15 5.8 4.0 1.2 0.2 setosa 16 5.7 4.4 1.5 0.4 setosa 17 5.4 3.9 1.3 0.4 setosa 18 5.1 3.5 1.4 0.3 setosa 19 5.7 3.8 1.7 0.3 setosa 20 5.1 3.8 1.5 0.3 setosa 21 5.4 3.4 1.7 0.2 setosa 22 5.1 3.7 1.5 0.4 setosa 23 4.6 3.6 1.0 0.2 setosa 24 5.1 3.3 1.7 0.5 setosa 25 4.8 3.4 1.9 0.2 setosa 26 5.0 3.0 1.6 0.2 setosa 27 5.0 3.4 1.6 0.4 setosa 28 5.2 3.5 1.5 0.2 setosa 29 5.2 3.4 1.4 0.2 setosa 30 4.7 3.2 1.6 0.2 setosa 31 4.8 3.1 1.6 0.2 setosa 32 5.4 3.4 1.5 0.4 setosa 33 5.2 4.1 1.5 0.1 setosa 34 5.5 4.2 1.4 0.2 setosa 35 4.9 3.1 1.5 0.2 setosa 36 5.0 3.2 1.2 0.2 setosa 37 5.5 3.5 1.3 0.2 setosa 38 4.9 3.6 1.4 0.1 setosa 39 4.4 3.0 1.3 0.2 setosa 40 5.1 3.4 1.5 0.2 setosa 41 5.0 3.5 1.3 0.3 setosa 42 4.5 2.3 1.3 0.3 setosa 43 4.4 3.2 1.3 0.2 setosa 44 5.0 3.5 1.6 0.6 setosa 45 5.1 3.8 1.9 0.4 setosa 46 4.8 3.0 1.4 0.3 setosa 47 5.1 3.8 1.6 0.2 setosa 48 4.6 3.2 1.4 0.2 setosa 49 5.3 3.7 1.5 0.2 setosa 50 5.0 3.3 1.4 0.2 setosa 51 7.0 3.2 4.7 1.4 versicolor 52 6.4 3.2 4.5 1.5 versicolor 53 6.9 3.1 4.9 1.5 versicolor 54 5.5 2.3 4.0 1.3 versicolor 55 6.5 2.8 4.6 1.5 versicolor 56 5.7 2.8 4.5 1.3 versicolor 57 6.3 3.3 4.7 1.6 versicolor 58 4.9 2.4 3.3 1.0 versicolor 59 6.6 2.9 4.6 1.3 versicolor 60 5.2 2.7 3.9 1.4 versicolor 61 5.0 2.0 3.5 1.0 versicolor 62 5.9 3.0 4.2 1.5 versicolor 63 6.0 2.2 4.0 1.0 versicolor 64 6.1 2.9 4.7 1.4 versicolor 65 5.6 2.9 3.6 1.3 versicolor 66 6.7 3.1 4.4 1.4 versicolor 67 5.6 3.0 4.5 1.5 versicolor 68 5.8 2.7 4.1 1.0 versicolor 69 6.2 2.2 4.5 1.5 versicolor 70 5.6 2.5 3.9 1.1 versicolor 71 5.9 3.2 4.8 1.8 versicolor 72 6.1 2.8 4.0 1.3 versicolor 73 6.3 2.5 4.9 1.5 versicolor 74 6.1 2.8 4.7 1.2 versicolor 75 6.4 2.9 4.3 1.3 versicolor 76 6.6 3.0 4.4 1.4 versicolor 77 6.8 2.8 4.8 1.4 versicolor 78 6.7 3.0 5.0 1.7 versicolor 79 6.0 2.9 4.5 1.5 versicolor 80 5.7 2.6 3.5 1.0 versicolor 81 5.5 2.4 3.8 1.1 versicolor 82 5.5 2.4 3.7 1.0 versicolor 83 5.8 2.7 3.9 1.2 versicolor 84 6.0 2.7 5.1 1.6 versicolor 85 5.4 3.0 4.5 1.5 versicolor 86 6.0 3.4 4.5 1.6 versicolor 87 6.7 3.1 4.7 1.5 versicolor 88 6.3 2.3 4.4 1.3 versicolor 89 5.6 3.0 4.1 1.3 versicolor 90 5.5 2.5 4.0 1.3 versicolor 91 5.5 2.6 4.4 1.2 versicolor 92 6.1 3.0 4.6 1.4 versicolor 93 5.8 2.6 4.0 1.2 versicolor 94 5.0 2.3 3.3 1.0 versicolor 95 5.6 2.7 4.2 1.3 versicolor 96 5.7 3.0 4.2 1.2 versicolor 97 5.7 2.9 4.2 1.3 versicolor 98 6.2 2.9 4.3 1.3 versicolor 99 5.1 2.5 3.0 1.1 versicolor 100 5.7 2.8 4.1 1.3 versicolor 101 6.3 3.3 6.0 2.5 virginica 102 5.8 2.7 5.1 1.9 virginica 103 7.1 3.0 5.9 2.1 virginica 104 6.3 2.9 5.6 1.8 virginica 105 6.5 3.0 5.8 2.2 virginica 106 7.6 3.0 6.6 2.1 virginica 107 4.9 2.5 4.5 1.7 virginica 108 7.3 2.9 6.3 1.8 virginica 109 6.7 2.5 5.8 1.8 virginica 110 7.2 3.6 6.1 2.5 virginica 111 6.5 3.2 5.1 2.0 virginica 112 6.4 2.7 5.3 1.9 virginica 113 6.8 3.0 5.5 2.1 virginica 114 5.7 2.5 5.0 2.0 virginica 115 5.8 2.8 5.1 2.4 virginica 116 6.4 3.2 5.3 2.3 virginica 117 6.5 3.0 5.5 1.8 virginica 118 7.7 3.8 6.7 2.2 virginica 119 7.7 2.6 6.9 2.3 virginica 120 6.0 2.2 5.0 1.5 virginica 121 6.9 3.2 5.7 2.3 virginica 122 5.6 2.8 4.9 2.0 virginica 123 7.7 2.8 6.7 2.0 virginica 124 6.3 2.7 4.9 1.8 virginica 125 6.7 3.3 5.7 2.1 virginica 126 7.2 3.2 6.0 1.8 virginica 127 6.2 2.8 4.8 1.8 virginica 128 6.1 3.0 4.9 1.8 virginica 129 6.4 2.8 5.6 2.1 virginica 130 7.2 3.0 5.8 1.6 virginica 131 7.4 2.8 6.1 1.9 virginica 132 7.9 3.8 6.4 2.0 virginica 133 6.4 2.8 5.6 2.2 virginica 134 6.3 2.8 5.1 1.5 virginica 135 6.1 2.6 5.6 1.4 virginica 136 7.7 3.0 6.1 2.3 virginica 137 6.3 3.4 5.6 2.4 virginica 138 6.4 3.1 5.5 1.8 virginica 139 6.0 3.0 4.8 1.8 virginica 140 6.9 3.1 5.4 2.1 virginica 141 6.7 3.1 5.6 2.4 virginica 142 6.9 3.1 5.1 2.3 virginica 143 5.8 2.7 5.1 1.9 virginica 144 6.8 3.2 5.9 2.3 virginica 145 6.7 3.3 5.7 2.5 virginica 146 6.7 3.0 5.2 2.3 virginica 147 6.3 2.5 5.0 1.9 virginica 148 6.5 3.0 5.2 2.0 virginica 149 6.2 3.4 5.4 2.3 virginica 150 5.9 3.0 5.1 1.8 virginica View Code4.列表:主要來存儲一些函數(shù)的輸出
x=list(a=6:9,b=10:13,c=c("天津","商業(yè)")) x結(jié)果是:
$a [1] 6 7 8 9$b [1] 10 11 12 13$c [1] "天津" "商業(yè)" View Code x$a#取出第一個(gè)變量(屬于向量) [1] 6 7 8 9 x[[1]]#和上式效果一樣,用兩個(gè)中括號說明返回值的類型和a的類型是一樣的,所以不能x[1]這樣用 x$b[2]#取出b元素(向量)中的第二個(gè)元素 [1] 11三、
1. if語句
#例1 x=66 if(x>=60){y=1}else{y=0} #}esle必須和上邊換行且放在一行 y #[1] 1#例2 if(x>=60){z=10} z #[1] 10#例3 x=90 if(x>=60){if(x>=70){if(x>=80){if(x>=90){y=4}else{y=3}}else{y=2}}else{y=1}}else{y=0} y #[1] 4?2. for循環(huán)
x=numeric(100)#生成100維的零向量 x #結(jié)果: #[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # [37] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # [73] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0#i表示的是位置,for循環(huán)是知道循環(huán)的圈數(shù)的 for(i in 1:100){x[i]=2} x #結(jié)果: # [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [37] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [73] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2?3. while循環(huán)
#while循環(huán)不知道循環(huán)的圈數(shù)的 x=numeric(100) i=1#i稱為循環(huán)控制變量 while(i<=50){x[i]=2i=i+1#i+=1不適合R } x #結(jié)果: # [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [37] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # [73] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0四、文件的讀取??
數(shù)據(jù)中每一行叫做一個(gè)觀測或者一個(gè)樣本,每一列叫做一個(gè)變量
編譯器改變默認(rèn)路徑方法:點(diǎn)擊文件選項(xiàng)------》改變工作目錄
1.讀文件
c=read.csv("d:/111.csv",header=T)#header=T表示將表頭讀進(jìn)去,同時(shí)把表頭作為變量的名字 c t=read.table("d:/111.txt",header=T) t #注意:用的是雙引號和反斜杠/,也可以用兩個(gè)正斜杠\\,如"d:\\111.csv"結(jié)果:
學(xué)號 成績 1 1 58 2 2 59 3 3 60 4 4 61 5 5 62 6 6 63 7 7 64 8 8 65 9 9 66 10 10 67 View Code2.寫文件
c=read.csv("d:/111.csv",header=T) write.table(c,"d:/333.text")五、自定義函數(shù)以及函數(shù)的編寫
#輸入x,y,輸出(x+y),給函數(shù)起一個(gè)名字f f=function(x,y){return(x+y)} f(2,3)#[1] 5sin(0) #R中函數(shù)三個(gè)要素:輸入,輸出,函數(shù)名?介紹一些重要函數(shù):https://www.cnblogs.com/xihehe/p/7473981.html? (一定要看)
cars apply(cars,2,mean)#按列求均值 注:apply函數(shù)用于矩陣的運(yùn)算結(jié)果:
> carsspeed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10 7 10 18 8 10 26 9 10 34 10 11 17 11 11 28 12 12 14 13 12 20 14 12 24 15 12 28 16 13 26 17 13 34 18 13 34 19 13 46 20 14 26 21 14 36 22 14 60 23 14 80 24 15 20 25 15 26 26 15 54 27 16 32 28 16 40 29 17 32 30 17 40 31 17 50 32 18 42 33 18 56 34 18 76 35 18 84 36 19 36 37 19 46 38 19 68 39 20 32 40 20 48 41 20 52 42 20 56 43 20 64 44 22 66 45 23 54 46 24 70 47 24 92 48 24 93 49 24 120 50 25 85 > apply(cars,2,mean)#按列求均值 speed dist 15.40 42.98 View Code小知識:R中主要函數(shù)來進(jìn)行統(tǒng)計(jì)計(jì)算,很多函數(shù)放在包里面的,而包是需要安裝的。包安裝完之后,必須加載,然后可以使用其中的函數(shù)。安裝包之前需要提前設(shè)置鏡像為中國的,步驟:點(diǎn)擊編譯器中的程序包選項(xiàng),設(shè)定CRAN鏡像,選擇中國的;然后在編輯器中輸入 install.packages("包的名字"),再輸入 library(包的名字)進(jìn)行加載包
install.packages("quantreg") library(quantreg)?R 一般把數(shù)據(jù)放到內(nèi)存中再來處理,但是缺點(diǎn)就是內(nèi)存如果只有1G大小,R只能最多處理1G大小的數(shù)據(jù)
library(MASS)#MASS是自帶的包 #quine#5個(gè)自變量,146個(gè)樣本的數(shù)據(jù) #?quine#查看該數(shù)據(jù)的用處quine[,5]#引用第五列 quine$Days#引用第五列 attach(quine)#attach函數(shù)把數(shù)據(jù)框quine放到內(nèi)存 #當(dāng)把數(shù)據(jù)框放進(jìn)內(nèi)存中,可以簡便的引用 Days#引用第五列,不用像上述兩種引用第五列方法那樣麻煩?
library(MASS)#MASS是自帶的包 str(quine)#str函數(shù)用來查看數(shù)據(jù)類型?結(jié)果:
'data.frame': 146 obs. of 5 variables:$ Eth : Factor w/ 2 levels "A","N": 1 1 1 1 1 1 1 1 1 1 ...$ Sex : Factor w/ 2 levels "F","M": 2 2 2 2 2 2 2 2 2 2 ...$ Age : Factor w/ 4 levels "F0","F1","F2",..: 1 1 1 1 1 1 1 1 2 2 ...$ Lrn : Factor w/ 2 levels "AL","SL": 2 2 2 1 1 1 1 1 2 2 ...$ Days: int 2 11 14 5 5 13 20 22 6 6 ...data.frame:數(shù)據(jù)框?? obs:觀測?? variables:變量
Factor指的是分類變量類型。也叫因子類型
2 levels "A","N":兩類,分為A種族和N種族
library(MASS)
attach(quine)
#計(jì)算女生,男生曠課的天數(shù)
tapply(Days,Sex,mean) #tapply分類匯總函數(shù)
#結(jié)果
# F M
#15.22500 17.95455
str(tapply(Days,Sex,mean))#查看類型
#tapply返回值類型為向量
# num [1:2(1d)] 15.2 18 #二維向量
# - attr(*, "dimnames")=List of 1
# ..$ : chr [1:2] "F" "M"
?R中關(guān)于隨機(jī)數(shù)的生成的函數(shù):均勻分布,指數(shù)分布,正太分布
r+分布的名字:該分布的隨機(jī)數(shù)
d+分布的名字:該分布的密度函數(shù)值
p+分布的名字:該分布的分布函數(shù)值
q+分布的名字:該分布的分位點(diǎn)的值
?
?示例如下:
#生成10個(gè)來自N(0,4)的隨機(jī)數(shù) rnorm(10,0,2)#標(biāo)準(zhǔn)差是2 方差是4 #結(jié)果: # [1] -1.2890521 -0.2594150 -0.2050323 -0.8702874 -4.5483221 -0.7911182 # [7] 3.8099254 1.5759880 -0.4671626 0.7049596 #生成5個(gè)均勻分布的隨機(jī)數(shù) runif(5,1,3) #[1] 1.328076 1.384769 2.338306 1.210036 2.088914 runif(5,1,3)#和上個(gè)不同 #[1] 2.457805 1.105783 1.488697 1.458045 1.453241 #如果希望隨機(jī)數(shù)固定,應(yīng)當(dāng)設(shè)置種子 set.seed(1) runif(5,1,3)#每次運(yùn)行的結(jié)果相同 #正態(tài)分布在x=10這個(gè)點(diǎn)的密度函數(shù)值 dnorm(10,0,2)#[1] 7.433598e-07 #正態(tài)分布的95%的分位點(diǎn) qnorm(0.95,0,2)#[1] 3.289707?六、畫圖,R的畫圖功能是非常強(qiáng)大的
散點(diǎn)圖和線圖:
描點(diǎn)法畫圖:把所有的橫坐標(biāo)放在第一個(gè)參數(shù),把所有的縱坐標(biāo)放在第二個(gè)參數(shù)
#cars 50個(gè)樣本,2個(gè)變量 plot(cars[,1],cars[,2])?結(jié)果:
x=1:10 y=2:11 plot(x,y)#散點(diǎn)圖?結(jié)果:
plot(x,y,type="l")#線性圖(折線圖)?結(jié)果:
plot(x,y,type="b")#既有直線又有點(diǎn),但線不穿過點(diǎn)結(jié)果:
plot(x,y,type="o")#既有直線又有點(diǎn),線穿過點(diǎn)?結(jié)果:
plot(x,y,type="l",col="blue",lty=2)#lty默認(rèn)為1是實(shí)線,2為虛線,col代表顏色 ?plot#查看plot函數(shù)的用法,以及參數(shù)設(shè)置結(jié)果:
?
plot是高級繪圖函數(shù),會自動(dòng)生成一個(gè)圖像界面。低級繪圖函數(shù),不會自動(dòng)生成一個(gè)圖像界面,只可以在高級繪圖函數(shù)基礎(chǔ)之上添加圖像
plot(cars[,1],cars[,2])#高級繪圖函數(shù) abline(v=15,lty=2)#在x=15處畫一條豎直的虛線 低級繪圖函數(shù)?結(jié)果:
plot(cars[,1],cars[,2],cex=0.5)#cex=1為默認(rèn)狀態(tài),代表了點(diǎn)的大小?結(jié)果:
? 直方圖:
cars #hist畫直方圖,屬于高級繪圖函數(shù) hist(cars$dist,ylim=c(0,25))#ylim設(shè)置的是縱坐標(biāo)的圖像顯示范圍,可以不寫 頻數(shù)直方圖?結(jié)果:
speed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10 7 10 18 8 10 26 9 10 34 10 11 17 11 11 28 12 12 14 13 12 20 14 12 24 15 12 28 16 13 26 17 13 34 18 13 34 19 13 46 20 14 26 21 14 36 22 14 60 23 14 80 24 15 20 25 15 26 26 15 54 27 16 32 28 16 40 29 17 32 30 17 40 31 17 50 32 18 42 33 18 56 34 18 76 35 18 84 36 19 36 37 19 46 38 19 68 39 20 32 40 20 48 41 20 52 42 20 56 43 20 64 44 22 66 45 23 54 46 24 70 47 24 92 48 24 93 49 24 120 50 25 85 View Code hist(cars$dist,freq=F)#頻率直方圖 lines(density(cars$dist),col="blue")#lines低級繪圖函數(shù) density核密度估計(jì)?結(jié)果:
hist(cars[,2],breaks=10)#組距,直方圖的柱子的數(shù)量?結(jié)果:
柱狀圖:barplot
library(MASS) attach(quine) table(Sex)#統(tǒng)計(jì)分類變量,各類的頻數(shù) 本處統(tǒng)計(jì)的是男女性別個(gè)數(shù) #結(jié)果: Sex # F M # 80 66 barplot(table(Sex))a=tapply(Days,Age,mean)#統(tǒng)計(jì)各年齡段的平均曠課天數(shù) a #結(jié)果: F0 F1 F2 F3 # 14.85185 11.15217 21.05000 19.60606 barplot(a)b=tapply(Days,list(Sex,Age),mean)#統(tǒng)計(jì)兩種性別各年齡段的平均曠課天數(shù) b #結(jié)果: F0 F1 F2 F3 # F 18.70000 12.96875 18.42105 14.00000 # M 12.58824 7.00000 23.42857 27.21429 barplot(b)?結(jié)果:
餅狀圖:pie?? 用來表示每部分占比
a=tapply(Days,Age,mean)#統(tǒng)計(jì)各年齡段的平均曠課天數(shù) pie(a)?結(jié)果:
莖葉圖:stem??? 用的不多
將數(shù)組中的數(shù)按位數(shù)進(jìn)行比較,將數(shù)的大小基本不變或變化不大的位作為一個(gè)主干(莖),將變化大的位的數(shù)作為分枝(葉),列在主干的后面,這樣就可以清楚地看到每個(gè)主干后面的幾個(gè)數(shù),每個(gè)數(shù)具體是多少。
stem(cars[,2])?結(jié)果:
The decimal point is 1 digit(s) to the right of the |0 | 240046782 | 0024666688222444664 | 0026680244666 | 0468068 | 0452310 | 12 | 0 View Code?
#par圖形設(shè)備函數(shù) par(mfrow=c(2,1))#畫兩行一列的圖,可更改行列數(shù) 按行排序 plot(cars) plot(cars)??結(jié)果:
par(mfcol=c(1,2))#畫兩行一列的圖,可更改行列數(shù) 按行排序 plot(cars) plot(cars)? 結(jié)果:
七、
1.假設(shè)檢驗(yàn)和區(qū)間估計(jì)
shapiro.test:檢驗(yàn)樣本是否服從正態(tài)分布
原假設(shè)是目標(biāo)樣本服從正態(tài)分布,用樣本計(jì)算出來的p值>0.05,那么就不能拒絕原假設(shè),目標(biāo)樣本服從正態(tài)分布
set.seed(12) a=rnorm(100,0,1) #檢驗(yàn)a是否服從正態(tài)分布 shapiro.test(a)? 結(jié)果:
Shapiro-Wilk normality testdata: a W = 0.98945, p-value = 0.6201 View Codeks.test:檢驗(yàn)?zāi)繕?biāo)樣本是否服從指定的連續(xù)型分布
原假設(shè):檢驗(yàn)?zāi)繕?biāo)服從指定的連續(xù)型分布,用樣本計(jì)算出來的p值>0.05,那么就接收原假設(shè),否則拒絕
set.seed(12) a=rnorm(100,0,1) #檢驗(yàn)a是否服從N(2,2)的正態(tài)分布 分布前邊加p(p+分布的名字:該分布的分布函數(shù)值) ks.test(a,"pnorm",2,2)?結(jié)果:
One-sample Kolmogorov-Smirnov testdata: a D = 0.60747, p-value < 2.2e-16 alternative hypothesis: two-sided View Codechisq.test:檢驗(yàn)?zāi)繕?biāo)樣本是否服從指定的離散型分布,用法同上
t.test:假設(shè)檢驗(yàn)(t檢驗(yàn)),區(qū)間估計(jì)
t檢驗(yàn)原假設(shè):檢驗(yàn)正態(tài)總體的均值為0( t檢驗(yàn)在總體方差未知、樣本方差已知的情況使用,總體方差已知用z檢驗(yàn));????? t.test函數(shù)還可以對總體的均值做區(qū)間估計(jì),條件是總體方差未知( t檢驗(yàn)在總體方差未知、樣本方差已知的情況使用,總體方差已知用z檢驗(yàn))
set.seed(12) a=rnorm(100,0,1) #t檢驗(yàn) t.test(a) #p值>0.05,接收原假設(shè),a來自的這個(gè)總體的均值為0 #95 percent confidence interval:95%的置信區(qū)間(注:總體均值的置信區(qū)間) ?t.test#置信度通過conf.level修改?結(jié)果:
One Sample t-testdata: a t = -0.36029, df = 99, p-value = 0.7194 alternative hypothesis: true mean is not equal to 0 95 percent confidence interval:-0.2028249 0.1404875 sample estimates:mean of x -0.03116866 View Code2.回歸,逐步回歸和回歸分析診斷
回歸:lm函數(shù)??? 回歸的統(tǒng)計(jì)量:summary函數(shù)
a=lm(dist~speed,data=cars)#線性回歸:波浪線左邊是自變量,右邊是應(yīng)變量 summary(a)#a的統(tǒng)計(jì)指標(biāo),可以看到a的各種檢驗(yàn) #Residuals:殘差 Coefficients:系數(shù) #p值小于5%說明回歸系數(shù)顯著,p值越小越拒絕原假設(shè),原假設(shè)是回歸方程不顯著 #str(a)#可查看a的結(jié)構(gòu):列表結(jié)構(gòu) plot(cars) abline(a)#a的回歸直線?結(jié)果:
Call: lm(formula = dist ~ speed, data = cars)Residuals:Min 1Q Median 3Q Max -29.069 -9.525 -2.272 9.215 43.201 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) -17.5791 6.7584 -2.601 0.0123 * speed 3.9324 0.4155 9.464 1.49e-12 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 15.38 on 48 degrees of freedom Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438 F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12 View Code逐步回歸:多元回歸,很多個(gè)自變量,計(jì)算AIC統(tǒng)計(jì)量越小越好?
w=read.table("COfreewy.txt",header=T) w#24行,4列 a=lm(CO~.,data=w)#CO作為自變量,其他作為因變量 summary(a)?結(jié)果:
? ? ? ? ? ? ? ? ? ? ? ? ??
#從上述結(jié)果中看出Hour的p值>0.05,不顯著,所以可以做逐步回歸 step(a) #AIC統(tǒng)計(jì)量=-(參數(shù)個(gè)數(shù)+似然函數(shù)的對數(shù)),越小越好,表示模型的精簡程度以及模型的預(yù)測準(zhǔn)確度?結(jié)果:
#從上述結(jié)果可以看出Hour不參與回歸 b=lm(CO~Wind+Traffic,data=w) summary(b)#Wind和Traffic都很顯著?結(jié)果:
?
八、R語言可視化(推薦R繪圖系統(tǒng))
1.散點(diǎn)圖,折線圖,垂線圖??? plot()
iris str(iris)#Species:Factor(分類變量,也叫因子變量)為非數(shù)值,會被編碼,第一個(gè)出現(xiàn)的類別會被編碼成1 plot(iris[,2],iris[,1])#散點(diǎn)圖?結(jié)果:
> irisSepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa 11 5.4 3.7 1.5 0.2 setosa 12 4.8 3.4 1.6 0.2 setosa 13 4.8 3.0 1.4 0.1 setosa 14 4.3 3.0 1.1 0.1 setosa 15 5.8 4.0 1.2 0.2 setosa 16 5.7 4.4 1.5 0.4 setosa 17 5.4 3.9 1.3 0.4 setosa 18 5.1 3.5 1.4 0.3 setosa 19 5.7 3.8 1.7 0.3 setosa 20 5.1 3.8 1.5 0.3 setosa 21 5.4 3.4 1.7 0.2 setosa 22 5.1 3.7 1.5 0.4 setosa 23 4.6 3.6 1.0 0.2 setosa 24 5.1 3.3 1.7 0.5 setosa 25 4.8 3.4 1.9 0.2 setosa 26 5.0 3.0 1.6 0.2 setosa 27 5.0 3.4 1.6 0.4 setosa 28 5.2 3.5 1.5 0.2 setosa 29 5.2 3.4 1.4 0.2 setosa 30 4.7 3.2 1.6 0.2 setosa 31 4.8 3.1 1.6 0.2 setosa 32 5.4 3.4 1.5 0.4 setosa 33 5.2 4.1 1.5 0.1 setosa 34 5.5 4.2 1.4 0.2 setosa 35 4.9 3.1 1.5 0.2 setosa 36 5.0 3.2 1.2 0.2 setosa 37 5.5 3.5 1.3 0.2 setosa 38 4.9 3.6 1.4 0.1 setosa 39 4.4 3.0 1.3 0.2 setosa 40 5.1 3.4 1.5 0.2 setosa 41 5.0 3.5 1.3 0.3 setosa 42 4.5 2.3 1.3 0.3 setosa 43 4.4 3.2 1.3 0.2 setosa 44 5.0 3.5 1.6 0.6 setosa 45 5.1 3.8 1.9 0.4 setosa 46 4.8 3.0 1.4 0.3 setosa 47 5.1 3.8 1.6 0.2 setosa 48 4.6 3.2 1.4 0.2 setosa 49 5.3 3.7 1.5 0.2 setosa 50 5.0 3.3 1.4 0.2 setosa 51 7.0 3.2 4.7 1.4 versicolor 52 6.4 3.2 4.5 1.5 versicolor 53 6.9 3.1 4.9 1.5 versicolor 54 5.5 2.3 4.0 1.3 versicolor 55 6.5 2.8 4.6 1.5 versicolor 56 5.7 2.8 4.5 1.3 versicolor 57 6.3 3.3 4.7 1.6 versicolor 58 4.9 2.4 3.3 1.0 versicolor 59 6.6 2.9 4.6 1.3 versicolor 60 5.2 2.7 3.9 1.4 versicolor 61 5.0 2.0 3.5 1.0 versicolor 62 5.9 3.0 4.2 1.5 versicolor 63 6.0 2.2 4.0 1.0 versicolor 64 6.1 2.9 4.7 1.4 versicolor 65 5.6 2.9 3.6 1.3 versicolor 66 6.7 3.1 4.4 1.4 versicolor 67 5.6 3.0 4.5 1.5 versicolor 68 5.8 2.7 4.1 1.0 versicolor 69 6.2 2.2 4.5 1.5 versicolor 70 5.6 2.5 3.9 1.1 versicolor 71 5.9 3.2 4.8 1.8 versicolor 72 6.1 2.8 4.0 1.3 versicolor 73 6.3 2.5 4.9 1.5 versicolor 74 6.1 2.8 4.7 1.2 versicolor 75 6.4 2.9 4.3 1.3 versicolor 76 6.6 3.0 4.4 1.4 versicolor 77 6.8 2.8 4.8 1.4 versicolor 78 6.7 3.0 5.0 1.7 versicolor 79 6.0 2.9 4.5 1.5 versicolor 80 5.7 2.6 3.5 1.0 versicolor 81 5.5 2.4 3.8 1.1 versicolor 82 5.5 2.4 3.7 1.0 versicolor 83 5.8 2.7 3.9 1.2 versicolor 84 6.0 2.7 5.1 1.6 versicolor 85 5.4 3.0 4.5 1.5 versicolor 86 6.0 3.4 4.5 1.6 versicolor 87 6.7 3.1 4.7 1.5 versicolor 88 6.3 2.3 4.4 1.3 versicolor 89 5.6 3.0 4.1 1.3 versicolor 90 5.5 2.5 4.0 1.3 versicolor 91 5.5 2.6 4.4 1.2 versicolor 92 6.1 3.0 4.6 1.4 versicolor 93 5.8 2.6 4.0 1.2 versicolor 94 5.0 2.3 3.3 1.0 versicolor 95 5.6 2.7 4.2 1.3 versicolor 96 5.7 3.0 4.2 1.2 versicolor 97 5.7 2.9 4.2 1.3 versicolor 98 6.2 2.9 4.3 1.3 versicolor 99 5.1 2.5 3.0 1.1 versicolor 100 5.7 2.8 4.1 1.3 versicolor 101 6.3 3.3 6.0 2.5 virginica 102 5.8 2.7 5.1 1.9 virginica 103 7.1 3.0 5.9 2.1 virginica 104 6.3 2.9 5.6 1.8 virginica 105 6.5 3.0 5.8 2.2 virginica 106 7.6 3.0 6.6 2.1 virginica 107 4.9 2.5 4.5 1.7 virginica 108 7.3 2.9 6.3 1.8 virginica 109 6.7 2.5 5.8 1.8 virginica 110 7.2 3.6 6.1 2.5 virginica 111 6.5 3.2 5.1 2.0 virginica 112 6.4 2.7 5.3 1.9 virginica 113 6.8 3.0 5.5 2.1 virginica 114 5.7 2.5 5.0 2.0 virginica 115 5.8 2.8 5.1 2.4 virginica 116 6.4 3.2 5.3 2.3 virginica 117 6.5 3.0 5.5 1.8 virginica 118 7.7 3.8 6.7 2.2 virginica 119 7.7 2.6 6.9 2.3 virginica 120 6.0 2.2 5.0 1.5 virginica 121 6.9 3.2 5.7 2.3 virginica 122 5.6 2.8 4.9 2.0 virginica 123 7.7 2.8 6.7 2.0 virginica 124 6.3 2.7 4.9 1.8 virginica 125 6.7 3.3 5.7 2.1 virginica 126 7.2 3.2 6.0 1.8 virginica 127 6.2 2.8 4.8 1.8 virginica 128 6.1 3.0 4.9 1.8 virginica 129 6.4 2.8 5.6 2.1 virginica 130 7.2 3.0 5.8 1.6 virginica 131 7.4 2.8 6.1 1.9 virginica 132 7.9 3.8 6.4 2.0 virginica 133 6.4 2.8 5.6 2.2 virginica 134 6.3 2.8 5.1 1.5 virginica 135 6.1 2.6 5.6 1.4 virginica 136 7.7 3.0 6.1 2.3 virginica 137 6.3 3.4 5.6 2.4 virginica 138 6.4 3.1 5.5 1.8 virginica 139 6.0 3.0 4.8 1.8 virginica 140 6.9 3.1 5.4 2.1 virginica 141 6.7 3.1 5.6 2.4 virginica 142 6.9 3.1 5.1 2.3 virginica 143 5.8 2.7 5.1 1.9 virginica 144 6.8 3.2 5.9 2.3 virginica 145 6.7 3.3 5.7 2.5 virginica 146 6.7 3.0 5.2 2.3 virginica 147 6.3 2.5 5.0 1.9 virginica 148 6.5 3.0 5.2 2.0 virginica 149 6.2 3.4 5.4 2.3 virginica 150 5.9 3.0 5.1 1.8 virginica > str(iris)#Species:Factor(分類變量,也叫因子變量)為非數(shù)值,會被編碼,第一個(gè)出現(xiàn)的類別會被編碼成1 'data.frame': 150 obs. of 5 variables:$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... View Code plot(iris[,2],iris[,1],type='l')#折線圖?結(jié)果:
plot(cars$speed,cars$dist,type='h')#垂線圖?結(jié)果:
plot(iris[,5],iris[,1])#盒裝圖(5個(gè)分位點(diǎn):最大值,最小值,中位點(diǎn),25%,75%分位點(diǎn)) iris[,5]非數(shù)值 #盒裝圖作用是比較不同種類的中位數(shù)?結(jié)果:
#以第五列分類,畫第一列和第二列構(gòu)成的散點(diǎn)圖 coplot(iris[,1]~iris[,2]|iris[,5])#分類畫圖?結(jié)果:
2 三維圖像? perp()??????????????? 兩個(gè)自變量
z=cos(y)/(1+x^2) x=seq(-2,2,len=100) y=cos(x) #二維圖像 plot(x,y) plot(y~x,type="l",xlim=c(-2.5,2.5),ylim=c(-1,2),col='blue')?結(jié)果:
x=seq(-5,5,len=100) y=seq(-5,5,len=100) f=function(x,y){cos(y)/(1+x^2)} z=outer(x,y,f)#必須定義一個(gè)函數(shù),z經(jīng)過x和y的外積求值 #三維圖像 persp(x,y,z) persp(x,y,z,thete=30,phi=45,col='blue',expand=0.7)#expand拉長0.7倍,thete和phi用于調(diào)整角度?結(jié)果:
3 雙縱軸圖像:經(jīng)濟(jì)領(lǐng)域
#1912年開始,每年中每個(gè)季度喝醉酒的人數(shù) drunkenness=ts(c(3875,4846,5128,8773,7327,6688,5582,3473,3196,rep(NA,51)),frequency=4,start=1912)#frequency=4,表示4個(gè)數(shù)代表1年的數(shù),即1個(gè)數(shù)代表1個(gè)季度的值 drunkenness?結(jié)果:
> drunkennessQtr1 Qtr2 Qtr3 Qtr4 1912 3875 4846 5128 8773 1913 7327 6688 5582 3473 1914 3196 NA NA NA 1915 NA NA NA NA 1916 NA NA NA NA 1917 NA NA NA NA 1918 NA NA NA NA 1919 NA NA NA NA 1920 NA NA NA NA 1921 NA NA NA NA 1922 NA NA NA NA 1923 NA NA NA NA 1924 NA NA NA NA 1925 NA NA NA NA 1926 NA NA NA NA View Code #1912年開始,每年喝醉酒的人數(shù) drunkenness=ts(c(3875,4846,5128,8773,7327,6688,5582,3473,3196,rep(NA,51)),start=1912)#51個(gè)缺省值,ts表示時(shí)間序列,frequency默認(rèn)為1,1個(gè)數(shù)代表1年的值 drunkenness?結(jié)果:
> drunkenness Time Series: Start = 1912 End = 1971 Frequency = 1 [1] 3875 4846 5128 8773 7327 6688 5582 3473 3196 NA NA NA NA NA [15] NA NA NA NA NA NA NA NA NA NA NA NA NA NA [29] NA NA NA NA NA NA NA NA NA NA NA NA NA NA [43] NA NA NA NA NA NA NA NA NA NA NA NA NA NA [57] NA NA NA NA View Code par(mar=c(5,6,2,4))#par圖形設(shè)備參數(shù)設(shè)置,mar指的是與各邊框的距離plot(drunkenness,lwd=3,col='gray',ann=F,las=2)#lwd指的是線寬,gray是灰色,las表示刻度文本方向(可更改為1),ann指的是橫縱軸以及標(biāo)題(T,F,TRUE,FALSE四個(gè)取值) mtext("Drunkenness\nRelated Arrests",side=2,line=3,cex=0.7)#空白處文本,side與line表示調(diào)整距離,cex(默認(rèn)等于1)表示文本大小,0.7為70%大小#高級繪圖函數(shù)不能疊加高級繪圖函數(shù),可以疊加低級繪圖函數(shù),但是設(shè)置下式則可以 par(new=TRUE)#縱軸坐標(biāo)的取值范圍長短可能會改變 plot(nhtemp,ann=False,axes=FALSE,lwd=0.6,lty=2)#axes=FALSE表示所有軸都不畫,lty默認(rèn)值為1表示實(shí)線(2,3為虛線) mtext("Temperature(F)",side=4,line=3,cex=0.7) title('Using par(new=TRUE) or par(user=...)')#標(biāo)題 axis(4)#右邊的軸,與第二個(gè)圖相關(guān)聯(lián)結(jié)果:
4 餅狀圖
?pie pie(rep(1, 24), col = rainbow(24), radius = 0.9)#rep(1, 24)將1重復(fù)24遍,是個(gè)24維向量。radius半徑sales = c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) names(sales) = c("Blueberry", "Cherry","Apple", "Boston Cream", "Other", "Vanilla Cream")#給數(shù)據(jù)框的每一列命名 title('銷量比例') pie(sales) # default colours結(jié)果:
5 條狀圖(常和雙縱軸圖像配合)
?barplot VADeaths#某地區(qū)死亡率 str(VADeaths)#格式均為數(shù)值型 num [1:5, 1:4] 11.7 18.1 26.9 41 66 8.7 11.7 20.3 30.9 54.3 ... #第一個(gè)圖 barplot(VADeaths) #第二個(gè)圖 barplot(VADeaths, beside = TRUE) #第三個(gè)圖 barplot(VADeaths, beside = TRUE,col = c("lightblue", "mistyrose", "lightcyan","lavender", "cornsilk"),legend = rownames(VADeaths), ylim = c(0, 100)) title(main = "Death Rates in Virginia", font.main = 4)?結(jié)果:
> VADeathsRural Male Rural Female Urban Male Urban Female 50-54 11.7 8.7 15.4 8.4 55-59 18.1 11.7 24.3 13.6 60-64 26.9 20.3 37.0 19.3 65-69 41.0 30.9 54.6 35.1 70-74 66.0 54.3 71.1 50.0 > str(VADeaths)num [1:5, 1:4] 11.7 18.1 26.9 41 66 8.7 11.7 20.3 30.9 54.3 ...- attr(*, "dimnames")=List of 2..$ : chr [1:5] "50-54" "55-59" "60-64" "65-69" .....$ : chr [1:4] "Rural Male" "Rural Female" "Urban Male" "Urban Female" View Code6 ggplot2包,qplol()--------自學(xué)
#補(bǔ)充:
plot(cars$speed,cars$dist,type='o') #text()函數(shù)可以在每個(gè)坐標(biāo)上添加y的取值 for(i in 1:50){text(cars[i,1],cars[i,2]+5,cars[i,2])}#+5代表向上一點(diǎn),不用和點(diǎn)重合了,加多少都行,主要為了好看?結(jié)果:
?
?
感謝天津商業(yè)大學(xué)的劉東老師:
書本推薦:薛毅的書,當(dāng)工具書看,用到哪里查哪里,上邊的都可以查到
畫圖的話,推薦R繪圖系統(tǒng),當(dāng)工具書使用,用到哪里查哪里
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/tianqizhi/p/8645700.html
總結(jié)
- 上一篇: android上调试H5小工具
- 下一篇: python之旅六【第六篇】模块