R语言小白学习笔记1—R语言基础
想说的话
最近因为毕设的缘故所以想要认真地学习一下R语言,为什么要选择R语言呢,我觉得R语言作为一款开源的数据分析统计工具相比较matlab等软件在国内可能用途更多一些,特别是当matlab等软件被卡脖子之后会R语言自身的竞争力会大一些。
然后我在图书馆借了本R语言的书:R语言 实用数据分析和可视化技术(原书第2版),是机械工业出版社出版的,美Jared P.Lander著,曾益强翻译的。我觉得海星。
因为是借的书所以想做下电子笔记,我希望笔记的风格是比较精简的,具体一些帮助理解的例子我也会摘过来,有些地方也会有自己的思考。
最后,我也是r语言的小白,笔记中有不严谨的地方欢迎指出,欢迎讨论,希望可以和大家一起学习,一起进步!
学习笔记1—R语言基础
1.1 数据类型
数据的主要类型:数值型(numeric)、字符型(character)、日期型(Data)、逻辑型(logical)
变量的数据类型可用class函数查看:class(x)
1.1.1 数值型数据
数值型:numeric
整数型:integer
注意:整数型在赋予变量时,要在整数后边加上L,例:i<-5L
判断是否是数值型用函数:is.numeric(x)
判断是否是整数型用函数:is.integer(x)
注意:整数型数据也是数值型一种,再进行计算的时候,R语言会自动将整数型数据转变为数值型数据
1.1.2 字符型数据
字符型(character)
因子(factor)
例:x<-"data"
要想得到字符(或数值)的长度,使用nchar函数
例:
nchar("hello")
5
1.1.3 日期型数据
最有用的是Date和POSIXct。
Date仅存储日期,实际代表自1970年1月1日以来的天数
POSIXct存储日期与时间,实际代表自1970年1月1日以来的秒数
用法:
>date1 <- as.Date("2012-06-28")
>date1
[1] "2012-06-28"
>as.numeric(date1)
[1] 15519
>date2 <- as.POSIXct("2021-06-28 17:42")
>date2
[1] "2021-06-28 17:42:00 EDT"
>as.numeric(date2)
[1] 1340919720
注意:使用as.numeric或as.Date函数不仅仅改变了对象的格式,也改变了其数据类型
1.1.4 逻辑型数据
真(TRUE)等同于1,假(FALSE)等同于0
判断是否是逻辑型用函数:is.logical(x)
逻辑值可以由数值或是字符之间的比较所产生
例:
>2==3
[1]FALSE
>2!=3
[1]TRUE
1.2 向量
向量是一些元素的集合,所有元素都具有相同的数据类型,向量不能包含不同类型的数据。
向量没有维度,不像数学中的向量有行和列的区别。
最常用的创建向量的方式是用c函数(combine),可以将许多元素合并为一个向量。
例:
>x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
1.2.1 向量操作
将上例x中每个元素乘以3(加法减法乘法除法同样适用)
>x*3
[1] 3 6 9 12 15 18 21 24 27 30
运算符(:)可以在任何方向产生连续的数字
>1:10
[1] 1 2 3 4 5 6 7 8 9 10
>5:-7
[1] 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7
假设有两个等长度的向量,每个相应的元素可以一起操作(加减乘除幂)
>x <- 1:10
>y <- -5:4
>x + y
[1] -4 -2 0 2 4 6 8 10 12 14
当处理两个不等长的向量时,较短的向量会循环补齐,如果长向量的长度不是短向量长度的整数倍时会给出警告
>x + c(1, 2)
[1] 2 4 4 6 6 8 8 10 10 12
向量也可以进行比较,得到的结果是长度与原向量相同的向量,其每个元素都是TRUE或FALSE
>x <= 5
[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
可以用all函数检查是否所有的元素都是TRUE,any函数可以检查所有元素中是否存在TRUE
>x <- 10:1
>y <- -4:5
>any(x < y)
[1] TRUE
>all(x < y)
[1] FALSE
nchar函数可以用于向量的每一个元素
>nchar(y)
[1] 2 2 2 2 1 1 1 1 1 1
访问向量的单个元素可以使用方括号[ ]。
获取x中的第一个元素:x[1]
获取x中的前两个元素:x[1:2]
获取x中非连续的元素:x[c(1, 4)]
>x[1]
[1] 10
>x[1:2]
[1] 10 9
>x[c(1, 4)]
[1] 10 7
在向量创建过程中或是创建之后都可以给向量命名
>c(One="a", Two="y", Last="r")
One Two Last
"a" "y" "r"
>w <- 1:3
>names(w) <- c("a", "b", "c")
>w
a b c
1 2 3
1.2.2 factor向量
factor是R语言中一个重要的概念,尤其是建立模型的时候要建立一个含有少量重复文本数据的向量。
这一段有点难理解,所以图片:
1.3 函数文档
R所提供的的函数都含有附带文档,查看方式是在函数名称前加上问号,如?mean
查看二元运算符(像+、*或==)的帮助文档时,在其前加上反引号(’),如:
>? '+'
>? '*'
如果函数记不清了,可用apropos函数来查找函数,如:
>apropos("mea")
后边会给出所有带mea的函数
1.4 缺失数据
两种缺失型数据类型:NA和NULL,虽然类似,表现不同
1.4.1 NA
R语言中使用NA来代替缺失数据。
NA经常作为向量中的一种元素出现。
is.na用来检查向量中的每个元素是否是缺失值。
例:
>z <- c(1, 2, NA, 8, 3, NA, 3)
>is.na(z)
[1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE
如果计算z的平均值,则结果为NA。
>mean(z)
>NA
当na.rm为TRUE时,mean函数会剔除掉缺失数据,然后计算剩余数据的平均值。
>mean(z, na.rm=TRUE)
[1] 3.4
如何填补缺失值后边介绍
1.4.2 NULL
NULL是没有任何东西,空白。
区别:NULL是原子性的,不能存在于向量中,如果在向量中使用,自然就消失了。
>z <- c(1, NULL, 3)
>z
[1] 1 3
NULL的检测函数为is.null
1.5 管道
管道符是一种新的调用函数的形式。
在magrittr包中实现。
调用函数时在管道符左边输入值或对象(作函数第一个参数),右边输入函数名。
例1:
>library(magrittr)
>x <- 1:10
>mean(x)
[1] 5.5
>x %>% mean
[1] 5.5
例2:
>z <- c(1, 2, NA, 8, 3, NA, 3)
>sum(is.na(z))
[1] 2
>z %>% is.na %>% sum
[1] 2
管道调用函数读起来自然,从左到右代码更容易理解。