1. 程式人生 > >R的基本操作

R的基本操作

基礎入門

c–建立向量

> x<-c(1,2,3)
> x
[1] 1 2 3

seq–生成序列

#生成2-10之間的整數序列
> data<-seq(2,10);data
[1]  2  3  4  5  6  7  8  9 10

#生成2-10之間,步長為2的整數序列
> data<-seq(2,10,by=2);data
[1]  2  4  6  8 10

#生成2-10之間,步長為0.2的序列
> data<-seq(2,10,by=.2);data
 [1]  2.0  2.2  2.4  2.6  2.8  3.0  3.2  3.4  3.6  3.8  4.0  4.2  4.4  4.6
[15]  4.8  5.0  5.2  5.4  5.6  5.8  6.0  6.2  6.4  6.6  6.8  7.0  7.2  7.4
[29]  7.6  7.8  8.0  8.2  8.4  8.6  8.8  9.0  9.2  9.4  9.6  9.8 10.0

#生成1-10之間的整數序列
> data<-1:10;data
 [1]  1  2  3  4  5  6  7  8  9 10

#生成從2開始,步長為0.5的前4個序列
> data<-seq(length=4,from=2,by=0.5)
> data
[1] 2.0 2.5 3.0 3.5

#生成-5到5之間按平均間隔生成的所有100個序列
> data<-seq(-5,5,length=100);data
  [1] -5.00000000 -4.89898990 -4.79797980 -4.69696970 -4.59595960 -4.49494949
  [7] -4.39393939 -4.29292929 -4.19191919 -4.09090909 -3.98989899 -3.88888889
 [13] -3.78787879 -3.68686869 -3.58585859 -3.48484848 -3.38383838 -3.28282828
 [19] -3.18181818 -3.08080808 -2.97979798 -2.87878788 -2.77777778 -2.67676768
 [25] -2.57575758 -2.47474747 -2.37373737 -2.27272727 -2.17171717 -2.07070707
 [31] -1.96969697 -1.86868687 -1.76767677 -1.66666667 -1.56565657 -1.46464646
 [37] -1.36363636 -1.26262626 -1.16161616 -1.06060606 -0.95959596 -0.85858586
 [43] -0.75757576 -0.65656566 -0.55555556 -0.45454545 -0.35353535 -0.25252525
 [49] -0.15151515 -0.05050505  0.05050505  0.15151515  0.25252525  0.35353535
 [55]  0.45454545  0.55555556  0.65656566  0.75757576  0.85858586  0.95959596
 [61]  1.06060606  1.16161616  1.26262626  1.36363636  1.46464646  1.56565657
 [67]  1.66666667  1.76767677  1.86868687  1.96969697  2.07070707  2.17171717
 [73]  2.27272727  2.37373737  2.47474747  2.57575758  2.67676768  2.77777778
 [79]  2.87878788  2.97979798  3.08080808  3.18181818  3.28282828  3.38383838
 [85]  3.48484848  3.58585859  3.68686869  3.78787879  3.88888889  3.98989899
 [91]  4.09090909  4.19191919  4.29292929  4.39393939  4.49494949  4.59595960
 [97]  4.69696970  4.79797980  4.89898990  5.00000000

rep—根據已有序列生成新的序列

#直接賦值
> x<-c(1,2,3,4,5)
> data<-rep(x);data
[1] 1 2 3 4 5

#複製n次
> data<-rep(x,3);data
 [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

#根據對應元素複製
> data<-rep(x,c(1,2,3,4,5));data
 [1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

paste—資料拼接

#拼接資料
> data<-paste(1,2,3,"hello"," ",c(1,2,3));data
[1] "1 2 3 hello   1" "1 2 3 hello   2" "1 2 3 hello   3"

#指定符號拼接資料
> data<-paste("a","b",sep=",")
> data
[1] "a,b"

#指定符號拼接資料(含資料序列)
> data<-paste("x",1:10,sep="|");data
 [1] "x|1"  "x|2"  "x|3"  "x|4"  "x|5"  "x|6"  "x|7"  "x|8"  "x|9"  "x|10"

[ ] —資料篩選

> x<-seq(-10,10,length=40);

#獲取大於3的資料
> data<-x[x>3];data
 [1]  3.333333  3.846154  4.358974  4.871795  5.384615  5.897436  6.410256
 [8]  6.923077  7.435897  7.948718  8.461538  8.974359  9.487179 10.000000

#獲取排序第1-5的資料
> data<-x[1:5];data
[1] -10.000000  -9.487179  -8.974359  -8.461538  -7.948718

#獲取除了序號1-5的資料【排除】
> data<-x[-(1:5)];data
 [1] -7.4358974 -6.9230769 -6.4102564 -5.8974359 -5.3846154 -4.8717949
 [7] -4.3589744 -3.8461538 -3.3333333 -2.8205128 -2.3076923 -1.7948718
[13] -1.2820513 -0.7692308 -0.2564103  0.2564103  0.7692308  1.2820513
[19]  1.7948718  2.3076923  2.8205128  3.3333333  3.8461538  4.3589744
[25]  4.8717949  5.3846154  5.8974359  6.4102564  6.9230769  7.4358974
[31]  7.9487179  8.4615385  8.9743590  9.4871795 10.0000000

summary—獲取物件基本資訊

可以用於方程係數的基本資訊和檢驗資訊

> x
 [1] -10.0000000  -9.4871795  -8.9743590  -8.4615385  -7.9487179  -7.4358974
 [7]  -6.9230769  -6.4102564  -5.8974359  -5.3846154  -4.8717949  -4.3589744
[13]  -3.8461538  -3.3333333  -2.8205128  -2.3076923  -1.7948718  -1.2820513
[19]  -0.7692308  -0.2564103   0.2564103   0.7692308   1.2820513   1.7948718
[25]   2.3076923   2.8205128   3.3333333   3.8461538   4.3589744   4.8717949
[31]   5.3846154   5.8974359   6.4102564   6.9230769   7.4358974   7.9487179
[37]   8.4615385   8.9743590   9.4871795  10.0000000

#物件基本資訊,分別是-最小值 | 1/4數值 | 中位數 | 3/4數值 | 最大值 
> summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    -10      -5       0       0       5      10 

factor–定製因子

因子就是將物件的值分成不同的組(levels)。用函式factor()建立一個因子,levels按序排列(字母序或數值序)。

> data<-c("粉紅","墨綠","湖綠","冰藍","粉紅")
> data
[1] "粉紅" "墨綠" "湖綠" "冰藍" "粉紅"

#levels可以實現去重
> factor(data)
[1] 粉紅 墨綠 湖綠 冰藍 粉紅
Levels: 冰藍 粉紅 湖綠 墨綠

matrix–生成矩陣

seq(-1,13,length=24);x
 [1] -1.0000000 -0.3913043  0.2173913  0.8260870  1.4347826  2.0434783  2.6521739
 [8]  3.2608696  3.8695652  4.4782609  5.0869565  5.6956522  6.3043478  6.9130435
[15]  7.5217391  8.1304348  8.7391304  9.3478261  9.9565217 10.5652174 11.1739130
[22] 11.7826087 12.3913043 13.0000000

#取前3*2=6個數據,生成3行2列的矩陣
> data<-matrix(x,3,2)
> data
           [,1]     [,2]
[1,] -1.0000000 0.826087
[2,] -0.3913043 1.434783
[3,]  0.2173913 2.043478

t–矩陣轉換秩

#從原來的3行2列轉成2行3列
> a<-t(data);a
          [,1]       [,2]      [,3]
[1,] -1.000000 -0.3913043 0.2173913
[2,]  0.826087  1.4347826 2.0434783

cbind rbind–將資料繫結成矩陣

> x1<-c(1,2,3,4)
> x2<-c(2,5,10,17)

#按行繫結,即第一行x11,x21,第二行x12,x22...
> data<-cbind(x1,x2);data
     x1 x2
[1,]  1  2
[2,]  2  5
[3,]  3 10
[4,]  4 17

#按列繫結,即第一列x11,x21,第二列x12,x22
> data<-rbind(x1,x2);data
   [,1] [,2] [,3] [,4]
x1    1    2    3    4
x2    2    5   10   17

data.frame-- 建立表格

建立資料幀(也稱為資料框)

資料幀會被當作各列具有不同模式和屬性的矩陣。

資料幀按照矩陣的方式顯示,選取的行或列也按照矩陣的方式來索引。

#建立1行3列的資料,併為表格的列名賦值
> x1<-data.frame(name="tom",age="23",gender="male");x1
  name age gender
1  tom  23   male

#建立3行3列的資料,併為列名賦值
> x1<-data.frame(name=c("tom","rose","panda"),age=c("23","22","18"),gender=c("male","female","male"));x1
   name age gender
1   tom  23   male
2  rose  22 female
3 panda  18   male

#根據列名獲取資料
> x1$name
[1] tom   rose  panda
Levels: panda rose tom
> x1$age
[1] 23 22 18
Levels: 18 22 23
> x1$gender
[1] male   female male  
Levels: female male

#覆蓋資料,資料長度必須與指定列的資料長度一致,過多過少都不行
> x1$name=c("白","熊","黎")
> x1
  name age gender
1   白  23   male
2   熊  22 female
3   黎  18   male

attach–資料幀掛接,扁平化資料幀

當覺得使用’ ( t &#x27;引用資料幀元素(如&#x27;t home’)麻煩時,可以進行資料幀掛接,這樣可以直接引用資料幀內的元素,而無需’$’,前提是資料幀外沒有同名的變數(如name)。

掛接後若要對資料幀元素進行賦值操作,仍需用’$’,否則視為賦值給資料幀外的元素。

#掛幀前需確認所有列名都沒有被用過,否則報錯,該列掛載失敗,其他列可以掛載
> attach(x1)
> name
[1] "白" "熊" "黎"
> age
[1] 23 22 18
Levels: 18 22 23
> gender
[1] male   female male  
Levels: female male

#取消掛載(掛了多少次,無論是否全部失敗,都要取消一次才能清除)
> detach(x1)

attach()也可以掛接list資料

注意:當對屬性值賦值之後,需要呼叫detach( )解除安裝掛接,再attach( )重新掛接才能顯示最新值。

read.table–讀取檔案資訊

#讀取資料,讀取前需要改變工作目錄(檔案->改變工作目錄)
> data<-read.table("info.txt",header=TRUE);data
  name age gender
1  tom  23     男
2 rose  26     女
3  jim  30     男
4 jary  28     男

#可以把物件當作dataframe使用
> data$name
[1] tom  rose jim  jary
Levels: jary jim rose tom

畫圖基礎

畫圖的主要函式是plot(),基本引數如下

1)type為一個字元的字串,用於給定繪圖的型別,可選的值如下:

“p”:繪點(預設值);

“l”:繪製線;

“b”:同時繪製點和線;

“c”:僅繪製引數"b"所示的線;

“o”:同時繪製點和線,且線穿過點;

“h”:繪製出點到橫座標軸的垂直線;

“s”:繪製出階梯圖(先橫後縱);

“S”:繪製出階梯圖(先縱後豎);

“n”:作空圖。

(2)main引數 字串,給出圖形的標題;

(3)sub引數 字串,給出圖形的子標題;

(4)xlab 和 ylab引數 字串,用於給出x軸和y軸的標籤。

(5)xlim 和 ylim引數 都是二維向量,分別表示x軸和y軸的取值範圍。

plot()

> a<-c(1,4,2,9)
> b<-c(2,5,7,1)
> plot(a,b)
> plot(a,b,xlab="單價",ylab="利潤",type="h",main="單價-利潤散點圖")

在這裡插入圖片描述
在這裡插入圖片描述
boxplot() 箱型圖

> data<-c(25, 45, 50, 54, 55, 61, 64, 68, 72, 75, 75,78, 79, 81, 83, 84, 84, 84, 85, 86, 86, 86,87, 89, 89, 89, 90, 91, 91, 92, 100)
> boxplot(data)

在這裡插入圖片描述

“盒式圖"或叫"盒須圖”"箱形圖"boxplot(也稱箱須圖(Box-whiskerPlot)須圖又稱為箱形圖,其繪製須使用常用的統計量,能提供有關資料位置和分散情況的關鍵資訊,尤其在比較不同的母體資料時更可表現其差異。

每條線表示的含義,其中應用到了分位值(數)的概念。

主要包含六個資料節點,將一組資料從大到小排列,分別計算出他的上邊緣,上四分位數Q3,中位數,下四分位數Q1,下邊緣,還有一個異常值。