zoukankan      html  css  js  c++  java
  • R语言学习

    一、

    R编辑器下载地址:https://cran.r-project.org/mirrors.html

    安装教程:

    其余皆默认安装,i7以下的系统都选择32-bit安装就可以

    R自学(各个包的详细描述):https://mirrors.tuna.tsinghua.edu.cn/CRAN/

    二、R语言数据的存储结构

    1.向量

    #向量的两种表示方法
    xiangliang1=c(1,2,3,4)#默认是列向量(用行显示是为了方便),c是连接函数
    xiangliang1    #结果:[1] 1 2 3 4
    xiangliang2=5:8#返回的是5到8的一个整型向量
    xiangliang2    #结果:[1] 5 6 7 8
    #索引
    xiangliang1[2]  #取出第二个向量   结果:2
    xiangliang1[c(2,3)]#取出第二三个向量   结果:2,3
                #xiangliang1[2,3] 错误,只能用上述方法
    #注:向量和标量做运算(加减乘除)时,要把标量循环补齐
    xiangliang2>5#结果:[1] FALSE  TRUE  TRUE  TRUE  注:逻辑向量 
    xiangliang2[xiangliang2>5]#结果:[1] 6 7 8  注:逻辑值为True就取出相应位置的元素
    xiangliang2+5#结果:[1] 10 11 12 13
    xiangliang2[2:4]#结果:  [1] 6 7 8    取出第二到四的元素
    xiangliang2[c(2,3,4)]#上式的另一种方法
    #seq(a,b,(length=5))生成一个最小值为a,最大值为b,长度为n的等差数列。注意该数列是向量(seq函数输出格式为向量)
    dengcha1=seq(1,10,length=5)#生成一个1到10的等差数列,长度为5
    dengcha1        #结果:[1]  1.00  3.25  5.50  7.75 10.00
    dengcha2=seq(12,20,by=2)#步长为2
    dengcha2
    #查看函数用法(弹出解释界面)
    ?seq
    ?c
    

    2.矩阵

    x=matrix(1:9,3,3)#按照列的顺序,生成3*3的矩阵
    x
    

    结果是:

         [,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
    

    结果是:

         [,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] 6
    

    3.数据框:形式上和矩阵是一样的

    data.frame(3:5,6:8)
    

    结果是:

      X3.5 X6.8
    1    3    6
    2    4    7
    3    5    8
    View Code
    x=data.frame(a=2:11,b=3:12)#每行叫做一个样本(观测),每列叫做变量
    x
    

    结果是:

        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,]#取出数据框第九行
    #   a  b
    #9 10 11
    x[,1]#取出数据框的第一列   [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#速度与刹车距离组成的数据框(50个样本)
    
       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#鸢尾花组成的数据框(150个样本)
    
        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 Code

    4.列表:主要来存储一些函数的输出

    x=list(a=6:9,b=10:13,c=c("天津","商业"))
    x
    

    结果是:

    $a
    [1] 6 7 8 9
    
    $b
    [1] 10 11 12 13
    
    $c
    [1] "天津" "商业"
    View Code
    x$a#取出第一个变量(属于向量) [1] 6 7 8 9
    x[[1]]#和上式效果一样,用两个中括号说明返回值的类型和a的类型是一样的,所以不能x[1]这样用
    x$b[2]#取出b元素(向量)中的第二个元素   [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循环

    x=numeric(100)#生成100维的零向量
    x
    #结果:
    #[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循环是知道循环的圈数的
    for(i in 1:100){
    		x[i]=2
    		   }
    x
    #结果:
    # [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循环

    #while循环不知道循环的圈数的
    x=numeric(100)
    i=1#i称为循环控制变量
    while(i<=50){
    	    x[i]=2
    	    i=i+1#i+=1不适合R	
    		 }
    x
    #结果:
    # [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
    

    四、文件的读取  

      数据中每一行叫做一个观测或者一个样本,每一列叫做一个变量

      编译器改变默认路径方法:点击文件选项------》改变工作目录

    1.读文件

    c=read.csv("d:/111.csv",header=T)#header=T表示将表头读进去,同时把表头作为变量的名字
    c
    t=read.table("d:/111.txt",header=T)
    t
    #注意:用的是双引号和反斜杠/,也可以用两个正斜杠\,如"d:\111.csv"
    

    结果:

       学号 成绩
    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 Code

    2.写文件

    c=read.csv("d:/111.csv",header=T)
    write.table(c,"d:/333.text")
    

    五、自定义函数以及函数的编写

    #输入x,y,输出(x+y),给函数起一个名字f
    f=function(x,y){
    		return(x+y)
    		   }
    f(2,3)#[1] 5
    
    sin(0)
    #R中函数三个要素:输入,输出,函数名
    

     介绍一些重要函数:https://www.cnblogs.com/xihehe/p/7473981.html  (一定要看)

    cars
    apply(cars,2,mean)#按列求均值             注:apply函数用于矩阵的运算
    

      结果:

    > cars
       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
    > apply(cars,2,mean)#按列求均值
    speed  dist 
    15.40 42.98 
    View Code

      小知识:R中主要函数来进行统计计算,很多函数放在包里面的,而包是需要安装的。包安装完之后,必须加载,然后可以使用其中的函数。安装包之前需要提前设置镜像为中国的,步骤:点击编译器中的程序包选项,设定CRAN镜像,选择中国的;然后在编辑器中输入 install.packages("包的名字"),再输入 library(包的名字)进行加载包

    install.packages("quantreg")
    library(quantreg)
    

     R 一般把数据放到内存中再来处理,但是缺点就是内存如果只有1G大小,R只能最多处理1G大小的数据

    library(MASS)#MASS是自带的包
    #quine#5个自变量,146个样本的数据
    #?quine#查看该数据的用处
    
    quine[,5]#引用第五列
    quine$Days#引用第五列
    attach(quine)#attach函数把数据框quine放到内存
    #当把数据框放进内存中,可以简便的引用
    Days#引用第五列,不用像上述两种引用第五列方法那样麻烦
    
    library(MASS)#MASS是自带的包
    str(quine)#str函数用来查看数据类型
    

     结果:

    '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:数据框   obs:观测   variables:变量
    Factor指的是分类变量类型。也叫因子类型
    2 levels "A","N":两类,分为A种族和N种族

    library(MASS)
    attach(quine)
    #计算女生,男生旷课的天数
    tapply(Days,Sex,mean) #tapply分类汇总函数
    #结果
    #       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中关于随机数的生成的函数:均匀分布,指数分布,正太分布

    r+分布的名字:该分布的随机数

    d+分布的名字:该分布的密度函数值

    p+分布的名字:该分布的分布函数值

    q+分布的名字:该分布的分位点的值

     

     示例如下:

    #生成10个来自N(0,4)的随机数
    rnorm(10,0,2)#标准差是2 方差是4
    #结果:
    # [1] -1.2890521 -0.2594150 -0.2050323 -0.8702874 -4.5483221 -0.7911182
    # [7]  3.8099254  1.5759880 -0.4671626  0.7049596
    #生成5个均匀分布的随机数
    runif(5,1,3)
    #[1] 1.328076 1.384769 2.338306 1.210036 2.088914
    runif(5,1,3)#和上个不同
    #[1] 2.457805 1.105783 1.488697 1.458045 1.453241
    #如果希望随机数固定,应当设置种子
    set.seed(1)
    runif(5,1,3)#每次运行的结果相同
    #正态分布在x=10这个点的密度函数值
    dnorm(10,0,2)#[1] 7.433598e-07
    #正态分布的95%的分位点
    qnorm(0.95,0,2)#[1] 3.289707
    

     六、画图,R的画图功能是非常强大的

      散点图和线图:

          描点法画图:把所有的横坐标放在第一个参数,把所有的纵坐标放在第二个参数

    #cars  50个样本,2个变量  
    plot(cars[,1],cars[,2])
    

     结果:

    x=1:10
    y=2:11
    plot(x,y)#散点图
    

     结果:

    plot(x,y,type="l")#线性图(折线图)
    

     结果:

    plot(x,y,type="b")#既有直线又有点,但线不穿过点
    

    结果:

    plot(x,y,type="o")#既有直线又有点,线穿过点
    

     结果:

    plot(x,y,type="l",col="blue",lty=2)#lty默认为1是实线,2为虚线,col代表颜色
    ?plot#查看plot函数的用法,以及参数设置
    

    结果:

     

    plot是高级绘图函数,会自动生成一个图像界面。低级绘图函数,不会自动生成一个图像界面,只可以在高级绘图函数基础之上添加图像

    plot(cars[,1],cars[,2])#高级绘图函数
    abline(v=15,lty=2)#在x=15处画一条竖直的虚线   低级绘图函数
    

     结果:

    plot(cars[,1],cars[,2],cex=0.5)#cex=1为默认状态,代表了点的大小
    

     结果:

       直方图:

    cars
    #hist画直方图,属于高级绘图函数
    hist(cars$dist,ylim=c(0,25))#ylim设置的是纵坐标的图像显示范围,可以不写   频数直方图
    

     结果:

       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低级绘图函数   density核密度估计 
    

     结果:

    hist(cars[,2],breaks=10)#组距,直方图的柱子的数量
    

     结果:

      柱状图:barplot

    library(MASS)
    attach(quine)
    table(Sex)#统计分类变量,各类的频数  本处统计的是男女性别个数
    #结果:	Sex
    #	 F  M 
    #	80 66 
    barplot(table(Sex))
    
    a=tapply(Days,Age,mean)#统计各年龄段的平均旷课天数
    a
    #结果:	      F0       F1       F2       F3 
    #	 14.85185 11.15217 21.05000 19.60606 
    barplot(a)
    
    b=tapply(Days,list(Sex,Age),mean)#统计两种性别各年龄段的平均旷课天数
    b
    #结果:		      F0       F1       F2       F3
    #		F 18.70000 12.96875 18.42105 14.00000
    #		M 12.58824  7.00000 23.42857 27.21429
    barplot(b)
    

     结果:

      饼状图:pie   用来表示每部分占比

    a=tapply(Days,Age,mean)#统计各年龄段的平均旷课天数
    pie(a)
    

     结果:

      茎叶图:stem    用的不多

          将数组中的数按位数进行比较,将数的大小基本不变或变化不大的位作为一个主干(茎),将变化大的位的数作为分枝(叶),列在主干的后面,这样就可以清楚地看到每个主干后面的几个数,每个数具体是多少。

    stem(cars[,2])
    

     结果:

      The decimal point is 1 digit(s) to the right of the |
    
       0 | 24004678
       2 | 002466668822244466
       4 | 002668024466
       6 | 046806
       8 | 04523
      10 | 
      12 | 0
    View Code
    #par图形设备函数
    par(mfrow=c(2,1))#画两行一列的图,可更改行列数  按行排序
    plot(cars)
    plot(cars)
    

      结果:

    par(mfcol=c(1,2))#画两行一列的图,可更改行列数  按行排序
    plot(cars)
    plot(cars)
    

      结果:

    七、

    1.假设检验和区间估计

    shapiro.test:检验样本是否服从正态分布

      原假设是目标样本服从正态分布,用样本计算出来的p值>0.05,那么就不能拒绝原假设,目标样本服从正态分布

    set.seed(12)
    a=rnorm(100,0,1)
    #检验a是否服从正态分布
    shapiro.test(a)
    

      结果:

            Shapiro-Wilk normality test
    
    data:  a
    W = 0.98945, p-value = 0.6201
    View Code

    ks.test:检验目标样本是否服从指定的连续型分布

      原假设:检验目标服从指定的连续型分布,用样本计算出来的p值>0.05,那么就接收原假设,否则拒绝

    set.seed(12)
    a=rnorm(100,0,1)
    #检验a是否服从N(2,2)的正态分布    分布前边加p(p+分布的名字:该分布的分布函数值)
    ks.test(a,"pnorm",2,2)
    

     结果:

            One-sample Kolmogorov-Smirnov test
    
    data:  a
    D = 0.60747, p-value < 2.2e-16
    alternative hypothesis: two-sided
    View Code

    chisq.test:检验目标样本是否服从指定的离散型分布,用法同上

    t.test:假设检验(t检验),区间估计

      t检验原假设:检验正态总体的均值为0( t检验在总体方差未知、样本方差已知的情况使用,总体方差已知用z检验);      t.test函数还可以对总体的均值做区间估计,条件是总体方差未知( t检验在总体方差未知、样本方差已知的情况使用,总体方差已知用z检验)
    set.seed(12)
    a=rnorm(100,0,1)
    #t检验   
    t.test(a)
    #p值>0.05,接收原假设,a来自的这个总体的均值为0
    #95 percent confidence interval:95%的置信区间(注:总体均值的置信区间)
    ?t.test#置信度通过conf.level修改
    

     结果:

            One Sample t-test
    
    data:  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 Code

    2.回归,逐步回归和回归分析诊断

    回归:lm函数    回归的统计量:summary函数

    a=lm(dist~speed,data=cars)#线性回归:波浪线左边是自变量,右边是应变量
    summary(a)#a的统计指标,可以看到a的各种检验
    #Residuals:残差   Coefficients:系数
    #p值小于5%说明回归系数显著,p值越小越拒绝原假设,原假设是回归方程不显著
    #str(a)#可查看a的结构:列表结构
    plot(cars)
    abline(a)#a的回归直线
    

     结果:

    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 ‘ ’ 1
    
    Residual 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

    逐步回归:多元回归,很多个自变量,计算AIC统计量越小越好 

    w=read.table("COfreewy.txt",header=T)
    w#24行,4列
    a=lm(CO~.,data=w)#CO作为自变量,其他作为因变量
    summary(a)
    

     结果:

                              

    #从上述结果中看出Hour的p值>0.05,不显著,所以可以做逐步回归
    step(a)
    #AIC统计量=-(参数个数+似然函数的对数),越小越好,表示模型的精简程度以及模型的预测准确度
    

     结果:

    #从上述结果可以看出Hour不参与回归
    b=lm(CO~Wind+Traffic,data=w)
    summary(b)#Wind和Traffic都很显著
    

     结果:

     

    八、R语言可视化(推荐R绘图系统) 

    1.散点图,折线图,垂线图    plot()

    iris
    str(iris)#Species:Factor(分类变量,也叫因子变量)为非数值,会被编码,第一个出现的类别会被编码成1
    plot(iris[,2],iris[,1])#散点图
    

     结果:

    > iris
        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
    > str(iris)#Species:Factor(分类变量,也叫因子变量)为非数值,会被编码,第一个出现的类别会被编码成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')#折线图
    

     结果:

    plot(cars$speed,cars$dist,type='h')#垂线图
    

     结果:

    plot(iris[,5],iris[,1])#盒装图(5个分位点:最大值,最小值,中位点,25%,75%分位点)   iris[,5]非数值
    #盒装图作用是比较不同种类的中位数
    

     结果:

    #以第五列分类,画第一列和第二列构成的散点图
    coplot(iris[,1]~iris[,2]|iris[,5])#分类画图
    

     结果:

    2 三维图像  perp()                两个自变量

    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')
    

     结果:

    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)#必须定义一个函数,z经过x和y的外积求值
    #三维图像
    persp(x,y,z)
    persp(x,y,z,thete=30,phi=45,col='blue',expand=0.7)#expand拉长0.7倍,thete和phi用于调整角度
    

     结果:

    3 双纵轴图像:经济领域

    #1912年开始,每年中每个季度喝醉酒的人数 
    drunkenness=ts(c(3875,4846,5128,8773,7327,
    			6688,5582,3473,3196,
    			rep(NA,51)),frequency=4,start=1912)#frequency=4,表示4个数代表1年的数,即1个数代表1个季度的值
    drunkenness
    

     结果:

    > drunkenness
         Qtr1 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年开始,每年喝醉酒的人数         
    drunkenness=ts(c(3875,4846,5128,8773,7327,
    			6688,5582,3473,3196,
    			rep(NA,51)),start=1912)#51个缺省值,ts表示时间序列,frequency默认为1,1个数代表1年的值
    drunkenness
    

     结果:

    > 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图形设备参数设置,mar指的是与各边框的距离
    
    plot(drunkenness,lwd=3,col='gray',ann=F,las=2)#lwd指的是线宽,gray是灰色,las表示刻度文本方向(可更改为1),ann指的是横纵轴以及标题(T,F,TRUE,FALSE四个取值)
    mtext("Drunkenness
    Related Arrests",side=2,line=3,cex=0.7)#空白处文本,side与line表示调整距离,cex(默认等于1)表示文本大小,0.7为70%大小
    
    #高级绘图函数不能叠加高级绘图函数,可以叠加低级绘图函数,但是设置下式则可以
    par(new=TRUE)#纵轴坐标的取值范围长短可能会改变
    plot(nhtemp,ann=False,axes=FALSE,lwd=0.6,lty=2)#axes=FALSE表示所有轴都不画,lty默认值为1表示实线(2,3为虚线)
    mtext("Temperature(F)",side=4,line=3,cex=0.7)
    title('Using par(new=TRUE) or par(user=...)')#标题
    axis(4)#右边的轴,与第二个图相关联 
    

    结果:

    4 饼状图

    ?pie
    pie(rep(1, 24), col = rainbow(24), radius = 0.9)#rep(1, 24)将1重复24遍,是个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")#给数据框的每一列命名
    title('销量比例')
    pie(sales) # default colours
    

    结果:

    5 条状图(常和双纵轴图像配合)

    ?barplot
    VADeaths#某地区死亡率
    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 ...
    #第一个图
    barplot(VADeaths)
    #第二个图
    barplot(VADeaths, beside = TRUE)
    #第三个图
    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)
    

     结果:

    > VADeaths
          Rural 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 Code

    6 ggplot2包,qplol()--------自学

    #补充:

    plot(cars$speed,cars$dist,type='o')
    #text()函数可以在每个坐标上添加y的取值
    for(i in 1:50){
    	text(cars[i,1],cars[i,2]+5,cars[i,2])
    		  }#+5代表向上一点,不用和点重合了,加多少都行,主要为了好看
    

     结果:

    感谢天津商业大学的刘东老师:

    书本推荐:薛毅的书,当工具书看,用到哪里查哪里,上边的都可以查到

    画图的话,推荐R绘图系统,当工具书使用,用到哪里查哪里

     

      

  • 相关阅读:
    VC 透明滑动控件Slider Control
    VC 对话框背景颜色、控件颜色
    VS2008下直接安装使用Boost库1.46.1版本
    强大的CImage类
    用CImage类来显示PNG、JPG等图片
    VS2008+Qt 项目目录
    java 中几种常用数据结构
    数据结构与算法——常用数据结构及其Java实现
    C++常用数据结构的实现
    基础数据结构和算法概念
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/8645700.html
Copyright © 2011-2022 走看看