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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容