R语言编程-Tidyverse 书籍-第一章(1)

此部分的内容,全部是对张敬信博士书籍的学习总结。
出发点: 因为tidyverse简洁编码,使R代码更加易读。我就想系统再次学习下R,这样让自己写的R代码更加简洁。

0 简介

0.1认识编程元素和语法规则

R中编程元素:元素,向量,数据框,列表,
Hadley Wickham定义的数据科学的工作流程:
数据读入- 清理数据-数据转换-数据可视化-数据建模-文档沟通


image.png

0.2 R语言编程思想

  1. 面向对象:一切,包括数值,函数,图像等
  2. 面向函数: 函数式思维,包括自定义函数和泛函式编程
  3. 向量话编程: 指的是向量,矩阵,多维数组

1 基本语法

image.png

1.1 基本运算

%/%:整除
%%:求余数
indentical(x,y):判断两个对象是否严格相等
dplyr:near(x,y): 判断两个浮点数数是否近似相等


| : 或
&: 与
上述两个运算符是向量运算符,对向量中所有元素分别进行运算

1.2 基本数据类型

数值型, 逻辑型,字符型
R中NA表示缺失值,NULL表示空值,NaN表示非数,Inf表示无穷大
对于大多数函数,NA具有传染性,即NA参与的运算,结果会变成NA
可以使用calss, typeof, mode()查看对象x的蕾西
str()显示对象x的结构

保存和载入数据

save(x, file="datas..")
load()

Vignettes (若有) ,是包的作者写的使用文档,它是该包的最佳学习资料

可以创建project来进行
向量都有两个属性:type(类型), length(长度)

numeric()## 创建一个全为0的指定长度的数值向量

创建等差向量
seq(from, to, by, length.out)
创建重复的向量
rep(x, times. lenght.out, each,...)

两个长度不同的向量做运算,短的会自动循环补齐以配合长的

逻辑向量
image.png

%in%用来判断元素是否属于集合

字符向量

移除向量名字: names(x) = NULL

对向量排序

sort(x, decreasing, na.last,....): sort(x)
order(), 返回值是元素排好序的索引,以其结果作为索引访问元素,正好是排好序的向量。
x[order(x)]
rank(), 返回值是该向量中对应元素的“排名”。
rev()### 翻转

matrix创建

矩阵也要求元素是同一类型,数值矩阵、逻辑矩阵等
matrix(x, ncol, nrow, byrow, dimnames, )
对角矩阵: diag(1:4, nrow=4)
矩阵运算:


1653290483(1).png

矩阵乘法:** %*% **

多维数组

创建: array(data, dim, dimnames, ),
访问: array(行, 列, 第三个维度)


1653290656(1).png
1653290790(1).png

1.3 数据结果②:列表,数据框, 因子

列表

列表最大的好处就是,它能够将多个不同类型的对象打包到一起,使得可以根据位置和名字访问它们。
list()
常使用$提取内容
使用[]提取对象内容时,类型仍然是对象, [[]]提出对象的下一级:


1653291807(1).png

数据框

tibble()创建:
tribble() 按行录入数据式创建tibble
as_tibble()转换数据为tibble

数据框是由列向量组成、有着矩阵形式的列表。
R中自带的数据框是data.frame , 但是建议改为tibble. 这是由Hardley提出的新取代方法。
并且Tidyverse对所有的数据框操作使用tibble.
Tibble的优点:


1653292675(1).png

可以以列表方式提取数据框的元素和子集
矩阵方式提取数据框的元素和子集,这和我们平时使用矩阵提取的方式相同。
####### 筛选按列名属于集合{x, y, w}来选df的列, 并选择前两行:

ind = names(df) %in% c("x", "y", "w")
df[1:2, ind]

str() 显示对象的结构

glimpse()

summary()作用在数据框上,可以生成各列/行的汇总信息

expand.grid(), 可以生成多个属性水平值得所所有组合

1.3.3 因子(factor)

变量分为定量和定性数据。
定性的可以分为名义型和有序型(与好坏之分),这类数据使用因子。
因子:factor(x, levels, labels, ordered, ...)


image.png

转变为因子型后,数据向量显示出来的与原来一样,但是内在存储已经变了。

其他有用函数

table()### 统计各水平出现次数
cut(x, breaks, lables,...)


image.png

gl()函数,用于多因素试验设计, 用该函数生成多个因素完全组合,基本格式如下:
gl(水平,重复数, 总长度,因子的名称)


image.png
forcats包专门处理因子水平

as_factor(), fct_count():计算各个水平, fct_c():合并


image.png

image.png

1.4 数据结果③:字符串,日期时间

#########字符串
是用双引号或单引号括起来的若干字符,建议用双引号。
tidyverse 系列中的stringr 包提供了一系列接口一致的、简单易用的字符串操作函数。

字符串的长度
image.png
字符串的合并
image.png

image.png
字符串的拆分
image.png
字符串的格式化输出

使用函数str_glue(), str_glue_data()就可以将字符串中变量名替换成变量值。


image.png
字符串的排序

str_sort(x, decreasing, locale, ...) ###返回排好序的元素
str_order(x, decreasing, locale, ...) ###返回排好序的索引
locale是设定语言,默认为en英语

字符串的检测匹配
image.png
字符串子集的提取

str_sub(字符, start, end)


image.png
提取匹配的内容
image.png
修改字符串
image.png
字符串其他函数
image.png

image.png

日期时间

日期时间值通常以字符串形式传入R 中,然后转化为以数值形式存储的日期时间变量。
lubridate包供了更加方便的函数,生成、转换、管理日期时间数据。
无论年月日/时分秒按什么顺序及以什么间隔符分隔,总能正确地识别成日期时间值:


image.png

格式化输出日期时间 - format()函数

image.png

给定模板格式输出:


image.png

提取日期时间数据的组件

image.png

使用with_tz()将时间数据转换为另一时区的同一个时间
force_tz() 将时间数据的时区强制转换为另一个时区


image.png

模糊提取到不同的时间单位

round_date(t, unit = "hour")

你可能感兴趣的:(R语言编程-Tidyverse 书籍-第一章(1))