数据阐明与R语言条记1:R与R语言
当前位置:以往代写 > 其他教程 >数据阐明与R语言条记1:R与R语言
2019-06-14

数据阐明与R语言条记1:R与R语言

数据阐明与R语言条记1:R与R语言

一、关于R

1. R的源起

R是S语言的一种实现。S语言是由 AT&T贝尔尝试室开拓的一种用来举办数据摸索、统计阐明、作图的表明型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个贸易 软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。厥后Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开拓了一个R系统。R的利用与S-PLUS有许多雷同之处,两个软件有必然的兼容性。

2. R is free

R是用于统计阐明、画图的语言和操尽兴况。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计较和统计制图的优秀东西。
R是一套完整的数据处理惩罚、计较和制图软件系统。其成果包罗:数据存储和处理惩罚系统;数组运算东西(其向量、矩阵运算方面成果尤其强大);完整连贯的统计阐明东西;优秀的统计制图成果;轻便而强大的编程语言:可哄骗数据的输入和输入,可实现分支、轮回,用户可自界说成果。
R是一个免费的自由软件,它有UNIX、Linux、MacOS和WINDOWS版本,都是可以免费下载和利用的,在那儿可以下载到R的安装措施、各类外挂措施和文档。在R的安装措施中只包括了8个基本模块,其他外在模块可以通过CRAN得到。

3. R的特点

(1) 有效的数据处理惩罚和生存机制。
(2) 拥有一整套数组和矩阵的操纵运算符。
(3) 一系列连贯而又完整的数据阐明中间东西。
(4) 图形统计可以对数据直接举办阐明和显示,可用于多种图形设备。
(5) 一种相当完善、简捷和高效的措施设计语言。它包罗条件语句、轮回语句、用户自界说的递归函数以及输入输出接口。
(6) R语言是彻底面向工具的统计编程语言。
(7) R语言和其它编程语言、数据库之间有很好的接口。
(8) R语言是自由软件,可以安心斗胆地利用,但其成果却不比任何其它同类软件差。
(9) R语言具有富厚的网上资源

二、R语言

1、建设向量和矩阵

函数
c():建设向量,R中数据是靠向量组织起来的;
length():查询向量的长度,即向量内项的个数;
mode():查察向量的范例;
rbind():将向量按行合成矩阵;
cbind():将向量按行合成矩阵。

> x=c(1,3,5,6,9,10)
> x
[1]  1  3  5  6  9 10
> mode(x)
[1] "numeric"
> y=c("a","b","sealter")
> y
[1] "a"       "b"       "sealter"
> mode(y)
[1] "character"
> x1=c(2,4,5,6)
> x1
[1] 2 4 5 6
> x2=c(7,6,8,9)
> x2
[1] 7 6 8 9
> length(x1)
[1] 4
> mode(x2)
[1] "numeric"
> x3=c(1:100)
> length(x3)
[1] 100
> x3
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
 [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
 [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
 [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
 [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100
> x3[4]
[1] 4
> rbind(x1,x2)
   [,1] [,2] [,3] [,4]
x1    2    4    5    6
x2    7    6    8    9
> cbind(x1,x2)
     x1 x2
[1,]  2  7
[2,]  4  6
[3,]  5  8
[4,]  6  9
>

2、求平均值、和、连乘、最值、方差和尺度差

函数:
mean():平均值
sum(): 和
min(): 最小值
max(): 较大值
var(): 方差
sd(): 尺度差
prod(): 连乘

> x=c(1:100)
> mean(x)
[1] 50.5
> sum(x)
[1] 5050
> min(x)
[1] 1
> max(x)
[1] 100
> var(X)
错误于is.data.frame(x) : 找不到工具'X'
> var(x)
[1] 841.6667
> sd(x)
[1] 29.01149
> prod(x)
[1] 9.332622e+157
>

3、寻求辅佐

函数

help()

   > help(mode)
   starting httpd help server ... done
   >

4、发生向量

(1) a是向量:
a[5]:只显示向量a第5个元素;
a[-5]:显示除第5个元素之外a的所有元素;
a[1:5]:显示向量a第1-5个元素;
a[-(1:5)]:显示除1-5个元素外向量a的所有元素;
a[c(2,4,7)]:显示向量a第2、4、7个元素;
a[a<20]:将向量a中小于20的元素都列出来
a[a>30 & a<50]
a[a[3]]

> 1:10
 [1]  1  2  3  4  5  6  7  8  9 10
> 1:10-1
 [1] 0 1 2 3 4 5 6 7 8 9
> 2:60*2+1
 [1]   5   7   9  11  13  15  17  19  21  23  25  27  29  31  33  35  37  39
[19]  41  43  45  47  49  51  53  55  57  59  61  63  65  67  69  71  73  75
[37]  77  79  81  83  85  87  89  91  93  95  97  99 101 103 105 107 109 111
[55] 113 115 117 119 121
> a=2:60*2+1
> a
 [1]   5   7   9  11  13  15  17  19  21  23  25  27  29  31  33  35  37  39
[19]  41  43  45  47  49  51  53  55  57  59  61  63  65  67  69  71  73  75
[37]  77  79  81  83  85  87  89  91  93  95  97  99 101 103 105 107 109 111
[55] 113 115 117 119 121
> a[5]
[1] 13
> a[-5]
 [1]   5   7   9  11  15  17  19  21  23  25  27  29  31  33  35  37  39  41
[19]  43  45  47  49  51  53  55  57  59  61  63  65  67  69  71  73  75  77
[37]  79  81  83  85  87  89  91  93  95  97  99 101 103 105 107 109 111 113
[55] 115 117 119 121
> a[1:5]
[1]  5  7  9 11 13
> a[-(1:5)]
 [1]  15  17  19  21  23  25  27  29  31  33  35  37  39  41  43  45  47  49
[19]  51  53  55  57  59  61  63  65  67  69  71  73  75  77  79  81  83  85
[37]  87  89  91  93  95  97  99 101 103 105 107 109 111 113 115 117 119 121
> a[c(2,4,7)]
[1]  7 11 17
> a[a<20]
[1]  5  7  9 11 13 15 17 19
> a[a>30 & a<50]
 [1] 31 33 35 37 39 41 43 45 47 49
> a[a[3]]
[1] 21
>

(2) seq()函数

按指定纪律发生向量

#p#分页标题#e#

seq(5,20):5-20,公差为1;
seq(5,121,by=2): 5-121,公差为2;
seq(5,121,length=10):首项是5,末项是121,总共有10个项,公差自动计较。

> seq(5,20)
 [1]  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> seq(5,121,by=2)
 [1]   5   7   9  11  13  15  17  19  21  23  25  27  29  31  33  35  37  39
[19]  41  43  45  47  49  51  53  55  57  59  61  63  65  67  69  71  73  75
[37]  77  79  81  83  85  87  89  91  93  95  97  99 101 103 105 107 109 111
[55] 113 115 117 119 121
> seq(5,121,length=10)
 [1]   5.00000  17.88889  30.77778  43.66667  56.55556  69.44444  82.33333
 [8]  95.22222 108.11111 121.00000
>

(3) 发生字母序列letters

letters[1:30]

> letters[1:30]
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r"
[19] "s" "t" "u" "v" "w" "x" "y" "z" NA  NA  NA  NA 
>

5、新建向量

(1) which()函数

which.max(a):较大值的项的下标;
which.min(a): 最小值的项的下标;
a[which.max(a)]:较大值;
a[which.min(a)]:最小值;
which(a==2):向量的项为2的下标;
a[which(a==2)]:向量项为2的值;
which(a>5):
a[which(a>5)]:

> a=c(2,3,4,2,5,1,6,3,2,5,8,5,7,3)
> which.max(a)
[1] 11
> which.min(a)
[1] 6
> a[which.max(a)]
[1] 8
> a[which.min(a)]
[1] 1
> which(a==2)
[1] 1 4 9
> a[which(a==2)]
[1] 2 2 2
> which(a>5)
[1]  7 11 13
> a[which(a>5)]
[1] 6 8 7
>

(2) 函数:

rev(): 倒置函数
sort(): 排序函数,从小到大顺序

> a=1:20
> a
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> rev(a)
 [1] 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1
> a=c(2,3,4,2,6,5,1,3,1,7,9,4,5)
> a
 [1] 2 3 4 2 6 5 1 3 1 7 9 4 5
> sort(a)
 [1] 1 1 2 2 3 3 4 4 5 5 6 7 9
> rev(sort(a))
 [1] 9 7 6 5 5 4 4 3 3 2 2 1 1
>

6、生成矩阵

函数matrix()

> a=c(1:12)
> a
 [1]  1  2  3  4  5  6  7  8  9 10 11 12
> matrix(a,nrow=3,ncol=4)
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> matrix(a,nrow=4,ncol=3)
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12
> matrix(a,nrow=3,ncol=4,byrow=T)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
>

7、矩阵运算

(1) 矩阵转置:

函数t(): 行变列,列变行

(2) 矩阵加减:

要具有沟通的行数和列数。对应元素向加减

(3) 矩阵相乘:

a%*%b(a*b是对应元素相乘,而非矩阵乘法)

(4) 求对角线

函数diag():

diag(a):
diag(diag(a)):对角线矩阵
diag(4):4阶单元矩阵

(5) 矩阵求逆

函数 rnorm(): 按正态漫衍发生随机数。如rnorm(16),按正态漫衍发生16个随机数

solve(): 求矩阵的逆矩阵

(6) 解线性方程组

函数 solve(a,b)

(7) 矩阵的特征值和特征向量

函数 eigen()

> a=matrix(1:12,nrow=3,ncol=4)
> a
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> t(a)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12
> a=b=matrix(1:12,nrow=3,ncol=4)
> a+b
     [,1] [,2] [,3] [,4]
[1,]    2    8   14   20
[2,]    4   10   16   22
[3,]    6   12   18   24
> a-b
     [,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
[3,]    0    0    0    0
> a=matrix(1:12,nrow=3,ncol=4)
> a
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> b=matrix(1:12,nrow=4,ncol=3)
> b
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12
> a%*%b
     [,1] [,2] [,3]
[1,]   70  158  246
[2,]   80  184  288
[3,]   90  210  330
> 
> 
> a=matrix(1:12,nrow=4,ncol=4)
> a
     [,1] [,2] [,3] [,4]
[1,]    1    5    9    1
[2,]    2    6   10    2
[3,]    3    7   11    3
[4,]    4    8   12    4
> diag(a)
[1]  1  6 11  4
> diag(diag(a))
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    6    0    0
[3,]    0    0   11    0
[4,]    0    0    0    4
> diag(4)
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    1    0    0
[3,]    0    0    1    0
[4,]    0    0    0    1
> 
> 
> a=matrix(rnorm(16),4,4)
> a
            [,1]        [,2]        [,3]       [,4]
[1,] -0.07449835 0.767041272  0.01604615  0.3095899
[2,] -0.73162169 0.001057113 -0.59228669 -1.7638285
[3,] -0.05484903 0.371784466 -0.89071220 -1.1877961
[4,] -1.33939256 0.984520795 -0.89137273  0.1809239
> solve(a)
           [,1]       [,2]        [,3]       [,4]
[1,]  0.1762998 -0.6002995  0.86669528 -0.4640008
[2,]  1.4974565  0.1813369  0.09267046 -0.1861373
[3,]  1.2866720  0.9715747 -1.19169171 -0.5534725
[4,] -0.5042897 -0.6440915  0.04072280  0.3782061
> 
> 
> a=matrix(rnorm(16),4,4)
> a
            [,1]       [,2]       [,3]       [,4]
[1,] -0.63144227 -0.4368828 -0.9003846 -0.6729192
[2,]  2.58904440 -0.2548481 -1.0429883 -0.1636670
[3,] -0.00467959 -0.2999544  0.9018346 -1.7540551
[4,]  2.01625048 -0.4873416 -0.5567995 -0.1960334
> b=c(1:4)
> b
[1] 1 2 3 4
> solve(a,b)
[1]  0.7324562 -7.1253633  1.5908142  0.3241105
> 
> 
> a=diag(4)+1
> a
     [,1] [,2] [,3] [,4]
[1,]    2    1    1    1
[2,]    1    2    1    1
[3,]    1    1    2    1
[4,]    1    1    1    2
> a.e=eigen(a,symmetric=T)
> a.e
$values
[1] 5 1 1 1
 
$vectors
     [,1]       [,2]       [,3]       [,4]
[1,] -0.5  0.8660254  0.0000000  0.0000000
[2,] -0.5 -0.2886751 -0.5773503 -0.5773503
[3,] -0.5 -0.2886751 -0.2113249  0.7886751
[4,] -0.5 -0.2886751  0.7886751 -0.2113249

三、数据的R语言暗示——数据框

1、向量、数组与矩阵

函数dim()

2、数据框

矩阵形式,但列可以差异数据范例

每列是一个变量,每行是一个视察值

函数 data.frame()。如data.frame(x1,x2),向量x1和x2的长度要相等

3、画散点图

#p#分页标题#e#

函数plot()

> x=c(1:6)
> x
[1] 1 2 3 4 5 6
> is.vector(x)
[1] TRUE
> is.array(x)
[1] FALSE
> dim(x)<-c(2,3)
> x
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> is.array(x)
[1] TRUE
> is.matrix(x)
[1] TRUE
> 
> 
> x1=c(10,13,45,26,23,12,24,78,23,43,31,56)
> x2=c(20,65,32,32,27,87,60,13,42,51,77,35)
> x=data.frame(x1,x2)
> x
   x1 x2
1  10 20
2  13 65
3  45 32
4  26 32
5  23 27
6  12 87
7  24 60
8  78 13
9  23 42
10 43 51
11 31 77
12 56 35
> x=data.frame('重量'=x1,'运费'=x2)
> x
   重量 运费
1    10   20
2    13   65
3    45   32
4    26   32
5    23   27
6    12   87
7    24   60
8    78   13
9    23   42
10   43   51
11   31   77
12   56   35
> plot(x)
>

数据阐发与R语言笔记1:R与R语言
4、读文本文件数据

先配置事情目次,把文本文件放于该目次下

x=read.table(“abc.txt”)

5、读剪切板

文本或Excel的数据均可通过剪贴板操纵

y <- read.table(“clipboard”,header=T)

6、读Excel文件数据

要领1:先把excel另存为空格脱离的prn文本名目再读

w <- read.table(“test.prn”,header=T)

要领2:安装RODBC包,再通过ODBC读

四、轮回语句与R剧本

1、轮回语句

(1) for 语句

(2) while 语句

2、R剧本

函数:
source(),
print()

    关键字:

在线提交作业