R学习 从Tidyverse学起,入门R语言(tibble,readr和dplyr)

R学习往期回顾:

R学习:字符串

R学习:环境和函数

R学习:数据框的基本操作

R学习:R for Data Science(五)

R学习:R for Data Science(四)

R学习:R for Data Science(三)

R学习:R for Data Science(二)

R学习:R for Data Science(一)

tidyverse出自于R大神Hadley Wickham之手,他是Rstudio首席科学家,也是ggplot2的作者。tidyverse就是他将自己所写的包整理成了一整套数据处理的方法,包括ggplot2,dplyr,tidyr,readr,purrr,tibble,stringr, forcats。同时也出了一本《R for Data Science》,这本书里面也详细介绍了tidyverse的使用方法。

tidyverse包含日常处理数据使用的核心包

我们可以将这些包进行分类:数据导入、数据整理、数据转换、可视化、建模、编程。

今天主要学习tibblereadrdplyr

install.packages("tidyverse")library(tidyverse)

tibble函数用法

R中的对多变量数据的标准保存形式是dataframe,而tibble是dataframe的进化版,它有如下优点:1.生成的数据框数据每列可以保持原来的数据格式,不会被强制性改变,即字符串,不会莫名其妙的变成因子格式;2.查看数据时,不再会一行显示不下,多行显示得非常丑;3.数据操作速度会更快

创建tibble

将数据框转换为 tibble。可以使用 as_tibble() 函数来完成转换

as_tibble(iris)

可以通过 tibble() 函数使用一个向量来创建新 tibble。tibble() 会自动重复长度为 1 的输入,并可以使用刚刚创建的新变量

tibble( x = 1:5, y = 1, z = x ^ 2 + y)

tibble() 函数的功能要比data.frame少得多:它不能改变输入的类型(例如,不能将字符串转换为因子)、变量的名称,也不能创建行名称。

对比tibble与data.frame

tibble 和传统 data.frame 的使用方法主要有两处不同:

打印和取子集

打印

tibble 的打印方法进行了优化,只显示前 10 行结果,并且列也是适合屏幕的,这种方式非常适合大数据集。除了打印列名, tibble 还会打印出列的类型,这项非常棒的功能借鉴于str() 函数

tibble(a = lubridate::now() + runif(1e3) * 86400,b = lubridate::today() + runif(1e3) * 30,c = 1:1e3,d = runif(1e3),e = sample(letters, 1e3, replace = TRUE))

取子集

迄今为止,你学到的所有工具都是作用于整个数据框。如果想要提取单个变量,那么就需要一些新工具,如 $ 和 [[。[[ 可以按名称或位置提取变量;$ 只能按名称提取变量,但可以减少一些输入:

df <- tibble( x = runif(5), y = rnorm(5))df

按名称提取

df$x

按位置提取

df[[1]]

要想在管道中使用这些提取操作,需要使用特殊的占位符

df %>% .$x
df %>% .[["x"]]

与 data.frame 相比, tibble 更严格:它不能进行部分匹配,如果想要访问的列不存在,它会生成一条警告信息.

readr函数用法

readr的目标是提供一种快速、友好的方法来读取矩形数据(如csv、tsv和fwf)。它的设计目的是灵活地解析许多类型的数据。

readr包的功能有

1 readr:read_csv(); read_tsv(); read_delim(); read_fwf(); read_table();

2 read_log();

3 readxl:read_xls(); read_xlsx();

4 haven:打开SAS 、SPSS、Stata等外部数据

dplyr函数用法

dplyr基本包含了我们整理数据的所有功能

1 mutate()使用现有变量的函数创建新变量
2 select()根据变量的名称选择变量
3 filter()根据条件过滤数据
4 summary()概述数据的统计特征

5 arrange()根据某一列的数据对行排序

5 group_by()对数据分组

mutate函数用法

starwars

增加一列

starwars %>% mutate(bmi = mass / ((height / 100) ^ 2))

如果只想保留新的列,可以使用 transmute() 函数

starwars %>%   transmute(bmi = mass / ((height / 100)  ^ 2))

删除name这一列

starwars %>% mutate(name =NULL)

select函数用法

选择一些列,不保留其余的列

starwars %>% select(name,height,hair_color)

我们还可以在 select () 函数中使用一些辅助函数。· startswith("abc"):匹配以“abc”开头的名称。· endswith("xyz"):匹配以“xyz”结尾的名称。· contains("ijk"):匹配包含“ijk”的名称。· matches("(.)\1"):选择匹配正则表达式的那些变量。这个正则表达式会匹配名称中有重复字符的变量。· num_range("x", 1:3):匹配 x1、 x2 和 x3。

以某一特征选择列

starwars %>% select(name,ends_with("color"))

把某些列提到前面

starwars %>% select(name,starships,everything())

将某一列移到最后

starwars %>% select(-name,name)

删除一列

starwars %>% select(-name)

重命名列

只保留重命名的列

starwars %>% select(NAME = name )#被改名的列放在=的右边

保留其余列:用rename函数

starwars %>% rename(NAME = name )

根据列名的特征筛选列并重命名

starwars %>% select(hahaha = ends_with('color'))

filter函数用法

根据某一列的特征筛选行

starwars %>% filter(species == "Human")
starwars %>% filter(mass > 100)

多重筛选

和(&)与“,”效果一致

starwars %>% filter(hair_color == "none" & eye_color == "black")starwars %>% filter(starwars, hair_color == "none", eye_color == "black")

或(|)

starwars %>% filter( hair_color == "none" | eye_color == "black")%>% select(hair_color,eye_color,everything())

group_by和summarise函数用法

group_by() 可以将分析单位从整个数据集更改为单个分组。接下来,在分组后的数据框上使用 dplyr 函数时,它们会自动地应用到每个分组。
group_by并不改变数据的模样

by_cyl<-mtcars %>% group_by(cyl)by_cyl

对每一组进行描述

by_cyl %>% summarise( disp = mean(disp), hp = mean(hp))

而没有分组的,则对所有数据进行描述

mtcars %>% summarise( disp = mean(disp), hp = mean(hp))

使用ungroup去除分组

by_cyl %>% ungroup()%>% summarise( disp = mean(disp), hp = mean(hp))

arrange函数用法

arrange() 函数的工作方式与 filter() 函数非常相似,但前者不是选择行,而是改变行的顺序。它接受一个数据框和一组作为排序依据的列名(或者更复杂的表达式)作为参数。如果列名不只一个,那么就使用后面的列在前面排序的基础上继续排序

默认按升序排列

starwars %>% arrange(height)

降序排列

starwars %>% arrange(desc(height))

多列排序,有先后顺序

starwars %>% arrange(gender,hair_color)

缺失值总是排在最后

(0)

相关推荐

  • R语言 | 数据操作dplyr包

    [更新~] Python网络爬虫与文本数据分析 dplyr简介 dplyr是R语言的数据分析包,很像python中的pandas,能对dataframe类型的数据做很方便的数据处理和分析操作.最初我也 ...

  • R语言简单for循环

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. 简单for循环  创建一个简单数据框 1Sys.setlocale('LC ...

  • R语言 | 读写txt、csv、excel文件

    [更新~] Python网络爬虫与文本数据分析 前段时间看到plotnine库(封装的R语言ggplot2)作的图太美了,有点想重新拾起R语言^_^ R语言代码略带凌乱,讲真的还是更喜欢Python代 ...

  • R数据分析:如何在R中使用mutate

    因为最近搞毕业论文,有点忙,加上还有好多粉丝咨询,临近毕业更新就很少了. 今天就写一个非常简单的文章,敷衍一下吧,哈哈哈. 今天要写的就是数据清洗的函数mutate(),这个属于超级基本的内容哦,一般 ...

  • 用R为数据分析插上翅膀

    " No one konws everything, and you don't have to."   --科白君 "R数据分析"专题·第1篇   编辑 |  ...

  • R包基础实操—tidyverse包

    核心软件包是ggplot2.dplyr.tidyr.readr.purrr.tibble.stringr和forcats,它们提供了建模.转换和可视化数据的功能. 其中,readr包用于读取数据,ti ...

  • 《R数据科学》--千变万化的数据只需一个readr便可

    [toc] 写在前面 数据导入是使用R语言分析数据的第一步,但是这部分的细节确实非常多,尤其是对于咱们微生物组数据来说,经常会遇到制表符和逗号作为分隔符的文件,其次,物种注释文件的七级注释往往使用分号 ...

  • dplyr总结篇

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. dplyr-总结  有必要对dplyr进行一个总结 对行处理 数据处理对于 ...

  • 初学《R数据科学》之——tidyverse是什么

    初学<R数据科学>之--tidyverse是什么 写在前面 在学<R数据科学>这本书之前,首先要知道,这本书不是讲各种类型的图用R是怎么做出来的,而是通过一些示例来讲解如何用R ...

  • R学习 从Tidyverse学起,入门R语言(tidyr和stringr)

    tidyverse出自于R大神Hadley Wickham之手,他是Rstudio首席科学家,也是ggplot2的作者.tidyverse就是他将自己所写的包整理成了一整套数据处理的方法,包括ggpl ...

  • R学习 从Tidyverse学起,入门R语言dplyr合并数据

    R学习往期回顾: R学习 流程控制 if,else,ifelse R学习 从Tidyverse学起,入门R语言(tidyr和stringr) R学习 从Tidyverse学起,入门R语言(tibble ...

  • 跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...

    简介:R语言统计与绘图公众号目前致力于分享医学统计与R绘图知识,手把手教你使用R语言绘制基线特征表.KM生存曲线.森林图.ROC曲线等.每天一篇精彩R语言推文教程,手把手带你入门R语言绘图. 今天推文 ...

  • 【生信菜鸟经】如何系统入门R语言

    写在前面 R语言不仅在生物信息数据处理中发挥着重要作用,也是其它主流数据处理人士的首选工具.现在非常多自学生物信息学的小伙伴必须学的就是R,所以写一个R的系统性入门指导是非常有必要的.我作为老一辈的生 ...

  • 生信分析人员如何系统入门R(2019更新版)

    五年前作为一个初出茅庐的菜鸟生信工程师苦于没有专业交流社群,遂自建了生信菜鸟团QQ群和博客,一点一滴积累了数万人气,进而和若干圈内好友组建了生信技能树联盟,三年前的直播生物信息学编程活动细节还历历在目 ...

  • 自行入门R语言的故事(一波三折)

    真情实感流露最是动人! 亲爱的读者你是第几次接触生物信息学才掌握的呢? 下面是NGS交流群积极参与者受邀投稿 第一部分 入门生物信息的错误示范 第一次接触生信技能树,又欢又喜,竟然还有视频,在B站,全 ...

  • 【组队学习】【28期】R语言数据科学

    R语言数据科学 论坛版块: http://datawhale.club/c/team-learning/36-category/36 开源内容: https://github.com/datawhal ...

  • 地理五诀:学地理入门法,如何学习风水?李双林(13)

    主讲:李双林 内容简述:各位朋友大家好,我叫李双林.今天我们来学习学地理入门法,原文大家读一下就可以了,我今天讲是按照我的经验来和大家来讲.让大家知道我是怎么学的,然后大家也可这样去学,可以少走很多弯 ...

  • 还觉得学PLC难?看完这份学习指南,PLC轻松入门~

    同时小七为大家整理了一份PLC基本指令,了解和熟悉PLC常用的逻辑指令和具体应用方法十分重要,学会这些,才可以让你轻松入门学PLC!