tidyverse及其子包
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及其子包相关推荐
- 最新版idea如何在包下建立子包(dao包下建立impl包)
本人Java新手,对idea也不太熟悉,最近想在src源文件夹下建立包后,再建立子包时出了问题(dao包下建impl),后来上网搜了资料才学会了操作.接下来给大家演示 假如我想建一个下图的体系:pro ...
- ClassPathBeanDefinitionScanner 扫描给定的包及其子包
AnnotationConfigApplicationContext 通过调用类路径Bean 定义扫描器ClassPathBeanDefinitionScanner 扫描给定包及其子包下的所有类,主要 ...
- IDEA如何在包下建立子包
idea如何在包下建立子包 第一次在包下建立子包时候出现了问题 在java > springmvc包下再new上一个package controller的时候就会出现这个样子 如何解决 在IDE ...
- python包之间引用_python 子包引用父包和其他子包
python 子包引用父包和其他子包 python引用子目录很简单, 里面放个__init__.py就可以了. 如何在子目录里面引用其他目录(父目录,爷目录和同辈分目录)呢? 例如: python有项 ...
- tidyverse笔记——tidyr包
tidyverse笔记--tidyr包 tidry:Tidy Messy Data 常用函数及其功能 tidyr--Reshape Gather Spread pivot_longer & p ...
- springboot怎样扫描与启动类非同包下也非子包下的类(javaBean)
一般来说springboot只会扫描启动类当前包和以下的子包中的javabean,但如果非要访问其他包的话, 也就是如何装配到IOC容器中,其实也是有办法的. 第一种: 首先,我们先在外面创建一个Ja ...
- IntelliJ IDEA怎么创建package包下面的子包
IntelliJ IDEA怎么创建package包下面的子包 当你打开如此界面时,确实无法在com.company下面新建子包,因为这个包里面什么也没有,无法支撑你新建子包,那么这个时候可以先在当前包 ...
- maven子包打包的时候[WARNING]
错误信息: [WARNING] The POM for xxxxxxxxx:jar:0.0.1-SNAPSHOT is missing, no dependency information avail ...
- SSIS 父子包,子包调用父包变量
学习内容来自于 天善学院 的视频 目录 介绍背景 正题:子包获取父包变量 介绍背景 背景: 父包与子包都执行 SQL TASK(向数据库 LOG表 插入一条记录) LOG表 内会有字段对应 当前包ID ...
最新文章
- MySQL 狠甩 Oracle 稳居 Top1,私有云最受重用,大数据人才匮乏! | 中国大数据应用年度报告...
- 用原生JavaScript实现淡入淡出轮播图
- IE浏览器报错 ‘Rowspan’ 为空或不是对象
- leetcode力扣75. 颜色分类
- 群晖 上传 源文件不存在_群晖NAS配多大容量硬盘合适?
- Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
- PDF转WORD并翻译外文文献,工具转化
- 支付宝VS微信支付竞品分析
- css实现一个三角形
- 数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS
- Apache 基金会创始成员访谈录 ———— 回顾 Apache 20年历程!
- 九大数据分析方法:结构分析法
- 第三代半导体项目大事件盘点
- 量子计算机可以发明时光机,俄科学家发明全球第一台时光机,可让微小粒子向过去移动1秒钟...
- html5按键声音,HTML5+Tone.js 声音合成按钮
- 解决ubuntu Certificate verification failed: The certificate is NOT trusted.
- qt 用海康播放库sdk播放视频
- SDN and Malware(1)
- Prism 8 官方文档翻译 -- 下载安装Prism v8
- 被热议的“碳达峰”要如何实现?
热门文章
- lua服务器客户端消息回调,lua服务器客户端消息回调
- 帕德逼近matlab算法,一种基于帕德逼近的通信误差函数逼近方法与流程
- 【Vegas转】自信从自我欣赏开始
- 微习惯-CH7 微习惯策略的八大规则
- github上很好的iOS资源集锦
- [python爬虫]喜马拉雅音乐
- 苹果6运行内存是多少_安卓手机12GB运行内存为何打不过苹果的4GB?有哪些原因?...
- CUDA:使用CUFFT来合成和 实时渲染海洋表面实例
- Vmware+移动硬盘,实现最简单环境的便携WinToGo
- java 微信公众号乱码_(原创)开发微信公众平台遇到的乱码等问题的解决