tidyverse

  tidyverse包中有八个常用包,主要有ggplot2/tibble/tidyr/readr/purrr/dplyr/stringr/forcat,如果需要其他包,我们只能还是自己library。这个八个包也提供了我们一个学习的思路,反向学习,毕竟,学习R就是学习R包的过程。其次,就是tidyverse包也有其自身的含义在里面,tidy+verse就是整洁+转变,简单理解意思就是数据清洗,而整洁的数据有三个特征分别是:1.每列为一个变量(Each variable is in a column);2.每行为一个观测(Each observation is in a row);3.每个单元格为一个取值(Each value is a cell)。我们使用tidyverse的目的,就是将原始数据整理成为R可用的数据,这个过程可以成为数据清洗和特征工程等多个名字,但是其目的是一样,其作用不可忽视。每一个包中都含有一种理念和一种方法,深入理念然后掌握方法才是最关键的。

  • ggplot2,用于数据可视化
  • tibble,用于形成便于数据处理的数据框,数据类型定义
  • tidyr,用于数据整洁,数据清理
  • readr,用于读入R 格式数据,数据读取
  • dplyr,用于数据操纵,数据整理
  • stringr,用于处理字符串数据
  • forcats,用于处理因子数据
  • lubridate, 用于处理日期和时间数据(没在tidyverse中)
#加载tidyverse,出现conflicts是正常
library(tidyverse)
  • 1
  • 2
  • 3

1.ggplot2/ggvis/ggpubr包

  这个包不陌生,用来做可视化和数据探索性分析。此外,如果我们想做可以交互操作的图,可以学习一下ggvis包,这个包结合了ggplot2和shiny,可以做到简单交互作图。还有如果你觉得ggplot2作图原理有点难,你可以参考一下ggpubr包,做出的结果也很好,可以多多琢磨一下。

#关于ggvis的一个实例,在微信文中没有体现出来,可以自己用码试一下
library(shiny)
library(ggvis)
p <- mtcars %>% ggvis(x = ~wt, y = input_select(names(mtcars), map = as.name)) %>% layer_points()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
#关于ggpubr
library(ggplot2)
library(magrittr)
library(ggpubr)
#写一个小数据框
id <- c("小明","小强","小李")
grade <- c(70,80,90)
sex <- c("男","女","男")
test <- data.frame(id,grade,sex)
#简单作图
ggbarplot(test,x="id",y="grade",fill = "sex")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.tibble

  tibble是数据框data.frame的进化版,还有data.table可以学习,对于这类数据的形式,都是为了更快的处理数据而存在的,我们都可以了解学习。遗憾的是R中并未有关于example的示例,当然大家也可以去搜张丹老师的博客,里面有对tibble的详细介绍。这里给出关于tibble的一些相关的函数,仅供参考。

名称 功能
as_tibble 强制转换lists和matrices为数据框(data.frame)
tibble 创建数据框(data.frame)或列表(list)
tribble 智能行(Row-wise)创建tibble
obj_sum/ type_sum/ tbl_sum 给出对象的简明摘要:对象类型和数据框大小
rownames 行名的操作工具(非常有用):可以提取行名为列或列为行名
has_name 检查命名元素的存在has_name(iris, “Species”)
repair_names 修复对象的名称(如果没有命名则用V+i代替)
all_equal 数据框相等的柔性比较,忽略行和列的排列顺序
glimpse 有点像str(),主要是查看数据集的结构
enframe 将向量变为数据框
print.tbl_df print(x,n)打印数据集x的前n行,默认为10行,有点像head()
add_column 给数据框添加列
add_row 给数据框添加行
is.tibble 检测对象是否为tibble
knit_print.trunc_mat 截断显示
#建立tibble型数据
t <- tibble(1:10,letters[1:10])
t
#查看t的数据类型,的确是数据框的
class(t)#建一个列表数据,然后利用tibble把它变为数据框
l <- list(id=runif(11),word=letters[5:15])
l
class(l)
l <- as.tibble(l)
class(l)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.readr包

  readr包也是很熟悉,并不陌生。
  readr包中主要的函数有:read_csv,read_delim,read_table,write_delim,write_csv,write_excel_csv,write_delim函数,其中read_table中分隔符是指定为固定空格的,不能修改分隔符,函数read_delim可以指定分隔符

4.tidyr包

  tidyr包的作用类似于reshape2包,都是将变量变为数据,或者数据变为变量。另外的两个功能和paste类似,是数据的拆分和合并。
以及tidyr包的下述四个函数用法:

  • gather—宽数据转为长数据;
  • spread—长数据转为宽数据;
  • unit—多列合并为一列;
  • separate—将一列分离为多列;
###宽数据,就是正常的数据
test#1. gather(data, key, value, …, na.rm = FALSE, convert = FALSE)
#data:需要被转换的宽形表
#key:将原数据框中的所有列赋给一个新变量key
#value:将原数据框中的所有值赋给一个新变量value
#…:可以指定哪些列聚到同一列中
#na.rm:是否删除缺失值
##把宽数据变长,就是把变量变成数据
#不保留变量
g1 <- gather(test,variable,value)
g1
#保留id变量,一般常用的是这种,也就是说把id看做是主键
g2 <- gather(test,varible,value,-id)
g2#2. spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)
#data:为需要转换的长形表
#key:需要将变量值拓展为字段的变量
#value:需要分散的值
#fill:对于缺失值,可将fill的值赋值给被转型后的缺失值
s1 <- spread(g2,varible,value)
s1#3.unite(data, col, …, sep = “_”, remove = TRUE)
#data:为数据框
#col:被组合的新列名称
#…:指定哪些列需要被组合
#sep:组合列之间的连接符,默认为下划线
#remove:是否删除被组合的列
u1 <- unite_(mtcars, "vs_am", c("vs","am"))
head(u1)#separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE,
#convert = FALSE, extra = “warn”, fill = “warn”, …)
#data:为数据框
#col:需要被拆分的列
#into:新建的列名,为字符串向量
#sep:被拆分列的分隔符
#remove:是否删除被分割的列
se1 <- u1%>%separate(vs_am, c("vs", "am"))
head(se1)
  • 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

其他数据导入和建模类的包

  • DBI,用于联接数据库
  • haven,用于读入SPSS、SAS、Stata 数据
  • httr,用于联接网页API
  • jsonlite,用于读入JSON 数据
  • readxl,用于读入Excel 文档
  • rvest,用于网络爬虫
  • xml2,用于读入xml 数据
  • modelr,用于使用管道函数建模
  • broom,用于统计模型结果的整洁

--------------------- 本文来自 草莓派R语言 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/iam_may/article/details/79338085?utm_source=copy

tidyverse及其子包相关推荐

  1. 最新版idea如何在包下建立子包(dao包下建立impl包)

    本人Java新手,对idea也不太熟悉,最近想在src源文件夹下建立包后,再建立子包时出了问题(dao包下建impl),后来上网搜了资料才学会了操作.接下来给大家演示 假如我想建一个下图的体系:pro ...

  2. ClassPathBeanDefinitionScanner 扫描给定的包及其子包

    AnnotationConfigApplicationContext 通过调用类路径Bean 定义扫描器ClassPathBeanDefinitionScanner 扫描给定包及其子包下的所有类,主要 ...

  3. IDEA如何在包下建立子包

    idea如何在包下建立子包 第一次在包下建立子包时候出现了问题 在java > springmvc包下再new上一个package controller的时候就会出现这个样子 如何解决 在IDE ...

  4. python包之间引用_python 子包引用父包和其他子包

    python 子包引用父包和其他子包 python引用子目录很简单, 里面放个__init__.py就可以了. 如何在子目录里面引用其他目录(父目录,爷目录和同辈分目录)呢? 例如: python有项 ...

  5. tidyverse笔记——tidyr包

    tidyverse笔记--tidyr包 tidry:Tidy Messy Data 常用函数及其功能 tidyr--Reshape Gather Spread pivot_longer & p ...

  6. springboot怎样扫描与启动类非同包下也非子包下的类(javaBean)

    一般来说springboot只会扫描启动类当前包和以下的子包中的javabean,但如果非要访问其他包的话, 也就是如何装配到IOC容器中,其实也是有办法的. 第一种: 首先,我们先在外面创建一个Ja ...

  7. IntelliJ IDEA怎么创建package包下面的子包

    IntelliJ IDEA怎么创建package包下面的子包 当你打开如此界面时,确实无法在com.company下面新建子包,因为这个包里面什么也没有,无法支撑你新建子包,那么这个时候可以先在当前包 ...

  8. maven子包打包的时候[WARNING]

    错误信息: [WARNING] The POM for xxxxxxxxx:jar:0.0.1-SNAPSHOT is missing, no dependency information avail ...

  9. SSIS 父子包,子包调用父包变量

    学习内容来自于 天善学院 的视频 目录 介绍背景 正题:子包获取父包变量 介绍背景 背景: 父包与子包都执行 SQL TASK(向数据库 LOG表 插入一条记录) LOG表 内会有字段对应 当前包ID ...

最新文章

  1. MySQL 狠甩 Oracle 稳居 Top1,私有云最受重用,大数据人才匮乏! | 中国大数据应用年度报告...
  2. 用原生JavaScript实现淡入淡出轮播图
  3. IE浏览器报错 ‘Rowspan’ 为空或不是对象
  4. leetcode力扣75. 颜色分类
  5. 群晖 上传 源文件不存在_群晖NAS配多大容量硬盘合适?
  6. Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
  7. PDF转WORD并翻译外文文献,工具转化
  8. 支付宝VS微信支付竞品分析
  9. css实现一个三角形
  10. 数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS
  11. Apache 基金会创始成员访谈录 ———— 回顾 Apache 20年历程!
  12. 九大数据分析方法:结构分析法
  13. 第三代半导体项目大事件盘点
  14. 量子计算机可以发明时光机,俄科学家发明全球第一台时光机,可让微小粒子向过去移动1秒钟...
  15. html5按键声音,HTML5+Tone.js 声音合成按钮
  16. 解决ubuntu Certificate verification failed: The certificate is NOT trusted.
  17. qt 用海康播放库sdk播放视频
  18. SDN and Malware(1)
  19. Prism 8 官方文档翻译 -- 下载安装Prism v8
  20. 被热议的“碳达峰”要如何实现?

热门文章

  1. lua服务器客户端消息回调,lua服务器客户端消息回调
  2. 帕德逼近matlab算法,一种基于帕德逼近的通信误差函数逼近方法与流程
  3. 【Vegas转】自信从自我欣赏开始
  4. 微习惯-CH7 微习惯策略的八大规则
  5. github上很好的iOS资源集锦
  6. [python爬虫]喜马拉雅音乐
  7. 苹果6运行内存是多少_安卓手机12GB运行内存为何打不过苹果的4GB?有哪些原因?...
  8. CUDA:使用CUFFT来合成和 实时渲染海洋表面实例
  9. Vmware+移动硬盘,实现最简单环境的便携WinToGo
  10. java 微信公众号乱码_(原创)开发微信公众平台遇到的乱码等问题的解决