R语言入门

安装

R语言开源,安装很简单,此处带过。


界面

在这里插入图片描述

R语言的使用简介

赋值命令

赋值符号为 <- 或 = ,但是建议使用<-

x <- 10   #赋值10给变量x

在这里插入图片描述

R语言的数据类型

R是一种基于对象(object)的语言,在R中看到的一切事物都是对象。

对象有4种基本类型:

  • 数值型(numeric) 30;3.14
  • 字符型(character) “dog”
  • 逻辑型(logical) True/False 或 T/F
  • 复数型(complex) 1+2i

查看对象的数据类型:class()

> x
[1] 10
> class(x)            #查看对象数据类型
[1] "numeric"         #数值型
> y <- 5
> x+y
[1] 15
> x*y
[1] 50
> a <- "cat;dog;pig" #将字符赋值给对象,需要加上引号
> a
[1] "cat;dog;pig"
> strsplit(a,";")    #将字符型变量a,按照“;”分割
[[1]]
[1] "cat" "dog" "pig"

> TRUE               #逻辑判断
[1] TRUE
> T
[1] TRUE
> FALSE
[1] FALSE
> F
[1] FALSE
> 
> T&F                #“和”
[1] FALSE
> T|F                #“或”
[1] TRUE
> !T                 #“非”
[1] FALSE

R语言的数据结构

在这里插入图片描述


向量 (vector)

一维数据,类似于数学上集合的概念,由1个或多个元素构成,可以存储数值型、字符型、逻辑型数据。

用函数c创建向量;
c代表concatenate(连接),也可以理解为combine(合并)。

> a <- c(1,2,3,4)
> a
[1] 1 2 3 4
> 1:4                #连续性数值型对象的赋值
[1] 1 2 3 4
> b <- c("apple","banana","peach")   #向量的对象也可是字符串
> b
[1] "apple"  "banana" "peach" 
> c <- c(TRUE,FALSE,TRUE)            #向量的对象还可以是逻辑型
> c
[1]  TRUE FALSE  TRUE                # 一个向量中的元素必须是同一种数据类型

> x <- 1:50
> x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
[50] 50
> x[5]                #x的第5个元素
[1] 5
> x[c(2,4)]           #借助向量一次提取多个元素
[1] 2 4
> x>5                 #对x中的元素进行判断
 [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[49]  TRUE  TRUE
> x[x>5]              #加上判断条件筛选x中的对象
 [1]  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
> x[5] <- 90          #修改x中的元素
> x
 [1]  1  2  3  4 90  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
[50] 50

矩阵 (matrix)

矩阵是二维数据(有行和列)
在R中,矩阵是有维数的向量,矩阵元素数据类型需要一致,可以是数值型,字符型和逻辑性。

matrix函数创建矩阵:

matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)

> x <- 1:20          #赋值
> x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20        
> m <- matrix(x,nrow=4,ncol=5)   #用x创建矩阵
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
> m1 <- matrix(x ,nrow=4)        #只需要指定行或列中的一个,就可以计算出另一个
> m1
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
-----------------------------

> m2 <- matrix(x ,nrow=4 ,ncol=5 ,byrow=T)  #使用行顺序排列(默认是列)
> m2
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
[4,]   16   17   18   19   20
-----------------------------

> m[1 ,2]  #查看第一行第二列的元素
[1] 5
> m[1 ,c(2 ,3)]  #查看第一行,第二和第三列的元素
[1] 5 9
> m[2,]  #查看第二行的所有元素
[1]  2  6 10 14 18
> m[,2]  #查看第二列的所有元素
[1] 5 6 7 8
----------------------------

> m[2,2] <- 20  #修改第二行第二列的元素为20
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2   20   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
> m[,2] <- 20  #将第二列元素全部修改为20
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   20    9   13   17
[2,]    2   20   10   14   18
[3,]    3   20   11   15   19
[4,]    4   20   12   16   20
> m[m>30] <- 30  #将例表中大于30的元素都修改为30
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   20    9   13   17
[2,]    2   20   10   14   18
[3,]    3   20   11   15   19
[4,]    4   20   12   16   20
-----------------------------

> m + 1 
     [,1] [,2] [,3] [,4] [,5]
[1,]    2   21   10   14   18
[2,]    3   21   11   15   19
[3,]    4   21   12   16   20
[4,]    5   21   13   17   21
> m+m
     [,1] [,2] [,3] [,4] [,5]
[1,]    2   40   18   26   34
[2,]    4   40   20   28   36
[3,]    6   40   22   30   38
[4,]    8   40   24   32   40
-----------------------------

> z <- array(1:9,c(2,3,4))  #创建数组
> z
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9    2
[2,]    8    1    3

, , 3

     [,1] [,2] [,3]
[1,]    4    6    8
[2,]    5    7    9

, , 4

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

列表 (list)

列表包括不同类型的元素和对象,是他们的有序集合。
和向量类似,都是一维的数据集合。
向量是能够存储一种数据类型,而列表可以储存若干向量、矩阵、数据框,甚至其他列表和组合。

> a <- 1:20
> b <- c("pig" ,"cattle" ,"sheep")
> c <- matrix(1:10 ,nrow=2)
> mlist <- list(a,b,c)    #创建列表
> mlist
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

[[2]]
[1] "pig"    "cattle" "sheep" 

[[3]]
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
-----------------------------

>  names(mlist)  #查看每个列表元素的名字
NULL
>  names(mlist) <- c("one" ,"two" ,"three")  #为列表中的每个元素进行命名
> names(mlist)
[1] "one"   "two"   "three"
------------------------------

> mlist[1]  #查看列表第一个元素
$one
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

> mlist[2]
$two
[1] "pig"    "cattle" "sheep" 

> mlist[3]
$three
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

> mlist[c(2,3)]
$two
[1] "pig"    "cattle" "sheep" 

$three
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
-----------------------------

> mlist["one"]  #查看列表中名为“one”的元素
$one
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

> mlist$one
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
-----------------------------


> mlist[1]     #列表用一对方括号表示列表中的元素,本质上数据类型还是列表
$one
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

> mlist[[1]]   #列表用两对方括号,表示元素本身,已经不是列表了
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> 

数据框 (dataframe)

数据框是矩形结构,包含行和列。
数据框实际上是一个列表。列表中的元素是向量,这些向量构成数据框的列,每一列必须具有相同的长度,而且列必须命名。
在这里插入图片描述

> df1 <- data.frame(site=c("a","b","c","d") ,season=c("Winter" ,"Summer" ,"Spring" ,"Fall") ,pH=c(7.4 ,6.3 ,8.6 ,7.2 ))  #创建数据框
> df1
  site season  pH
1    a Winter 7.4
2    b Summer 6.3
3    c Spring 8.6
4    d   Fall 7.2
> colnames(df1)  #查看数据框列名
[1] "site"   "season" "pH"    
> colnames(df1)[1] <- "city"  #修改数据框列名返回的第一个元素的值
> df1
  city season  pH
1    a Winter 7.4
2    b Summer 6.3
3    c Spring 8.6
4    d   Fall 7.2
> df1[,1]  #查看数据框第一列
[1] "a" "b" "c" "d"
> df1$city  #按名称索引
[1] "a" "b" "c" "d"

R基本统计量的计算

> x <- c(4.5 ,4.5 ,5.0 ,5.0 ,5.5 ,5.5 ,5.5 ,6.0 ,6.0 ,6.5 ,17.0 )
> # 样本含量(向量的长度)
> n <- length(x)
> n
[1] 11
> # 算术平均数
> mean <- mean(x)
> mean
[1] 6.454545
> # 方差
> var <- var(x)
> var
[1] 12.62273
> # 标准差
> std.dev <- sd(x)
> std.dev 
[1] 3.552848
> # 标准误
> std.mean <- std.dev/sqrt(n)
> std.mean 
[1] 1.071224
> # 中位数
> median <- median(x)
> median
[1] 5.5
> # 变异系数
> c.v <- 100*std.dev/mean
> # 变异系数
> c.v
[1] 55.04412
> # 极差
> range <- max(x) - min(x)
> range
[1] 12.5
> # 上四分位数
> upper.quartile <- quantile(x ,3/4)
> upper.quartile
75% 
  6 
> # 下四分位数
> lower.quartile <- quantile(x ,1/4)
> lower.quartile
25% 
  5 
> # summary函数计算所分析数据的最小值、下四分位数、中位数、算术平均数、上四分位数和最大值
> summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  4.500   5.000   5.500   6.455   6.000  17.000 

R进行异常值检验

> # 四分位数检验
> x <- c(4.5 ,4.5 ,5 ,5 ,5.5 ,5.5 ,5.5 ,6 ,6 ,6.5 ,17)
> upper.quartile <- quantile(x ,3/4)
> lower.quartile <- quantile(x ,1/4)
> IQR <- upper.quartile - lower.quartile
> upper.outlier <- upper.quartile + 1.5*IQR
> lower.outlier <- lower.quartile - 1.5*IQR
> outlier1 <- which(x>upper.outlier)
> outlier2 <- which(x<lower.outlier)
> outlier1
[1] 11
> outlier2
integer(0)

> # Grubbs检验
> install.packages("outliers")
试开URL’https://mirrors.tongji.edu.cn/CRAN/bin/windows/contrib/4.0/outliers_0.14.zip'
Content type 'application/zip' length 84347 bytes (82 KB)
downloaded 82 KB

package ‘outliers’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\ALIENWARE\AppData\Local\Temp\Rtmpc1zNV4\downloaded_packages
> library(outliers)
> x <- c(4.5 ,4.5 ,5.0 ,5.0 ,5.5 ,5.5 ,5.5 ,6.0 ,6.0 ,6.5 ,17.0 )
> 
> # 默认检测最大值是否是异常值,opposite = FALSE
> grubbs.test(x)

	Grubbs test for one outlier

data:  x
G = 2.968170, U = 0.030897, p-value = 2.308e-07
alternative hypothesis: highest value 17 is an outlier

> # 如果要检测最小值是否是异常值,加上参数opposite = TRUE 
> grubbs.test(x ,opposite=TRUE)

	Grubbs test for one outlier

data:  x
G = 0.55013, U = 0.96671, p-value = 1
alternative hypothesis: lowest value 4.5 is an outlier

计算常用概率分布函数

在这里插入图片描述

> # d是density的缩写,表示密度函数
> # 计算标准正态分布x=0对应的值
> dnorm(0 ,mean=0 ,sd=1)
[1] 0.3989423
> # p是quantile的缩写,表示概率累积分布函数
> pnorm(0 ,mean=0 ,sd=1)
[1] 0.5
> # 计算标准正态分布从负无穷大到x的概率是0.9678,可以通过qnorm函数计算x的值
> qnorm(0.9678 ,mean=0 ,sd=1)
[1] 1.849401
> # r是radnom的缩写,表示随机函数
> # 生成符合正态分布均值为0,标准差为1的50个随机数
> rnorm(50 ,mean=0 ,sd=1)
[1] -1.41251372 -1.34009133 -0.14781196 -1.64708709  0.54913575 -0.84581084 -0.41846515 -1.34067616  1.18717192  0.50290476 -0.73542229  1.63871703
[13]  1.17335942 -0.04842197  1.26847077  0.78414830  1.88596786  0.27968617 -1.77085920 -2.23270768  0.63299473 -0.24814760  1.12919002  0.71834834
[25] -0.81522536 -0.98187995  2.30751933  1.31887837 -0.47294173  0.46840903 -0.64846364 -0.23225712  0.87104441  2.52291946 -0.56971207  0.79112635
[37] -0.63984660 -1.57807542  0.96905441  1.76338953  1.20198607 -0.47571799  1.95709805  0.65497510  1.27188857 -0.11770212  1.52434198  1.20559993
[49] -0.83175382 -0.52164392
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值