tidyverse数据处理

2024-02-22 11:59
文章标签 数据处理 tidyverse

本文主要是介绍tidyverse数据处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

tidyverse出自于R大神Hadley Wickham之手,他是Rstudio首席科学家,也是ggplot2的作者。tidyverse就是他将自己所写的包整理成了一整套数据处理的方法,包括ggplot2,dplyr,tidyr,readr,purrr,tibble,stringr, forcats。tidyverse主要的经常用的函数工具:


1.管道符%>%

> iris %>% head(,3)Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

2.filter

> filter(iris,Species == "virginica")Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1           6.3         3.3          6.0         2.5 virginica
2           5.8         2.7          5.1         1.9 virginica
3           7.1         3.0          5.9         2.1 virginica
4           6.3         2.9          5.6         1.8 virginica
5           6.5         3.0          5.8         2.2 virginica
6           7.6         3.0          6.6         2.1 virginica
7           4.9         2.5          4.5         1.7 virginica
8           7.3         2.9          6.3         1.8 virginica
... ...

3.select

> select(iris, Petal.Length,Petal.Width,Species)Petal.Length Petal.Width    Species
1            1.4         0.2     setosa
2            1.4         0.2     setosa
3            1.3         0.2     setosa
4            1.5         0.2     setosa
5            1.4         0.2     setosa
6            1.7         0.4     setosa
7            1.4         0.3     setosa
8            1.5         0.2     setosa
... ...> select(iris,-Sepal.Length,-Sepal.Width)Petal.Length Petal.Width    Species
1            1.4         0.2     setosa
2            1.4         0.2     setosa
3            1.3         0.2     setosa
4            1.5         0.2     setosa
5            1.4         0.2     setosa
6            1.7         0.4     setosa
7            1.4         0.3     setosa
8            1.5         0.2     setosa

4.arrange

> arrange(iris,Sepal.Length)Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            4.3         3.0          1.1         0.1     setosa
2            4.4         2.9          1.4         0.2     setosa
3            4.4         3.0          1.3         0.2     setosa
4            4.4         3.2          1.3         0.2     setosa
5            4.5         2.3          1.3         0.3     setosa
6            4.6         3.1          1.5         0.2     setosa
7            4.6         3.4          1.4         0.3     setosa
8            4.6         3.6          1.0         0.2     setosa
... ...> arrange(iris,desc(Sepal.Length))Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            7.9         3.8          6.4         2.0  virginica
2            7.7         3.8          6.7         2.2  virginica
3            7.7         2.6          6.9         2.3  virginica
4            7.7         2.8          6.7         2.0  virginica
5            7.7         3.0          6.1         2.3  virginica
6            7.6         3.0          6.6         2.1  virginica
7            7.4         2.8          6.1         1.9  virginica
8            7.3         2.9          6.3         1.8  virginica

5.mutate

> mutate(iris,Spepal.Area = Sepal.Length*Sepal.Width) Sepal.Length Sepal.Width Petal.Length Petal.Width    Species Spepal.Area
1            5.1         3.5          1.4         0.2     setosa       17.85
2            4.9         3.0          1.4         0.2     setosa       14.70
3            4.7         3.2          1.3         0.2     setosa       15.04
4            4.6         3.1          1.5         0.2     setosa       14.26
5            5.0         3.6          1.4         0.2     setosa       18.00
6            5.4         3.9          1.7         0.4     setosa       21.06
7            4.6         3.4          1.4         0.3     setosa       15.64
8            5.0         3.4          1.5         0.2     setosa       17.00
... ...

6.summarise

> summarise(iris,count=n(),mean=mean(Sepal.Length))count     mean
1   150 5.843333

7.group_by,通常跟summarise一起使用

> group_by(iris,Species) %>% summarise(n(),mean=mean(Sepal.Length),max=max(Sepal.Width))
# A tibble: 3 x 4Species    `n()`  mean   max<fct>      <int> <dbl> <dbl>
1 setosa        50  5.01   4.4
2 versicolor    50  5.94   3.4
3 virginica     50  6.59   3.8

8.unite

> unite(iris,Sepal.Area,Sepal.Length,Sepal.Width,sep=" x ",remove=FALSE)Sepal.Area Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1    5.1 x 3.5          5.1         3.5          1.4         0.2     setosa
2      4.9 x 3          4.9         3.0          1.4         0.2     setosa
3    4.7 x 3.2          4.7         3.2          1.3         0.2     setosa
4    4.6 x 3.1          4.6         3.1          1.5         0.2     setosa
5      5 x 3.6          5.0         3.6          1.4         0.2     setosa
6    5.4 x 3.9          5.4         3.9          1.7         0.4     setosa
... ...iris_ <- unite(iris,Sepal.Area,Sepal.Length,Sepal.Width,sep=" x ",remove=FALSE)

9.seperate

> separate(iris_,Sepal.Area,c("Length_","Width_"),sep=" x ",remove=TRUE)Length_ Width_ Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1       5.1    3.5          5.1         3.5          1.4         0.2     setosa
2       4.9      3          4.9         3.0          1.4         0.2     setosa
3       4.7    3.2          4.7         3.2          1.3         0.2     setosa
4       4.6    3.1          4.6         3.1          1.5         0.2     setosa
5         5    3.6          5.0         3.6          1.4         0.2     setosa
6       5.4    3.9          5.4         3.9          1.7         0.4     setosa
7       4.6    3.4          4.6         3.4          1.4         0.3     setosa
... ...

10.gather (ggplot2画图的时候经常会用到)

> gather(iris,measurement,value,Sepal.Length:Petal.Width)Species   mesurement value
1       setosa Sepal.Length   5.1
2       setosa Sepal.Length   4.9
3       setosa Sepal.Length   4.7
4       setosa Sepal.Length   4.6
5       setosa Sepal.Length   5.0
6       setosa Sepal.Length   5.4
7       setosa Sepal.Length   4.6
8       setosa Sepal.Length   5.0
9       setosa Sepal.Length   4.4
10      setosa Sepal.Length   4.9
11      setosa Sepal.Length   5.4
12      setosa Sepal.Length   4.8
13      setosa Sepal.Length   4.8
14      setosa Sepal.Length   4.3
15      setosa Sepal.Length   5.8
16      setosa Sepal.Length   5.7
17      setosa Sepal.Length   5.4
... ...> iris_ <- gather(iris,measurement,value,Sepal.Length:Petal.Width)

11.spread

> spread(iris_,measurement,value)
错误: Each row of output must be identified by a unique combination of keys.
Keys are shared for 600 rows:
* 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350
* 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400
* 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450
* 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 47
> length(iris_$value)
[1] 600
> iris_$id <- 1:600
> spread(iris_,measurement,value)Species  id Petal.Length Petal.Width Sepal.Length Sepal.Width
1       setosa   1           NA          NA          5.1          NA
2       setosa   2           NA          NA          4.9          NA
3       setosa   3           NA          NA          4.7          NA
4       setosa   4           NA          NA          4.6          NA
5       setosa   5           NA          NA          5.0          NA
6       setosa   6           NA          NA          5.4          NA
7       setosa   7           NA          NA          4.6          NA
8       setosa   8           NA          NA          5.0          NA
9       setosa   9           NA          NA          4.4          NA
... ...

 

参考两篇文章:
http://www.mamicode.com/info-detail-2216961.html

https://mp.weixin.qq.com/s/-NIQ1DhXTHGY2xpanwbf9w

这篇关于tidyverse数据处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735193

相关文章

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

【程序分享1】第一性原理计算 + 数据处理程序

【1】第一性原理计算 + 数据处理程序 SMATool 程序:VASP + QE + 零温 + 有限温度 + 拉伸、剪切、双轴、维氏硬度的计算 ElasTool v3.0 程序:材料弹性和机械性能的高效计算和可视化工具包 VELAS 程序:用于弹性各向异性可视化和分析 Phasego 程序:用于自动计算和绘制相图 可视化软件 GDIS 软件:第一原理计算/VASP + 结构预测/USP

数据处理与数据填充在Pandas中的应用

在数据分析和机器学习项目中,数据处理是至关重要的一步。Pandas作为Python中用于数据分析和操作的一个强大库,提供了丰富的功能来处理和清洗数据。本文将深入探讨Pandas在数据处理,特别是数据填充方面的应用。 在实际的数据集中,缺失值(Missing Values)或异常值(Outliers)是常见的问题。这些不完整或错误的数据如果不加以处理,会严重影响数据分析的准确性和机器学习模型的性能

【控制算法 数据处理】一阶滤波算法

简单介绍: 一阶滤波算法是比较常用的滤波算法,它的滤波结果=a*本次采样值+(1-a)*上次滤波结果,其中,a为0~1之间的数。一阶滤波相当于是将新的采样值与上次的滤波结果计算一个加权平均值。a的取值决定了算法的灵敏度,a越大,新采集的值占的权重越大,算法越灵敏,但平顺性差;相反,a越小,新采集的值占的权重越小,灵敏度差,但平顺性好。优点是对周期干扰有良好的抑制作用,适用于波动频率比较高的场合,它

Flink事件时间、水印和迟到数据处理

事件时间与水印 所谓事件时间,就是Flink DataStream中的数据元素自身带有的、在其实际发生时记录的时间戳,具有业务含义,并与系统时间独立。很显然,由于外部系统产生的数据往往不能及时、按序到达Flink系统,所以事件时间比处理时间有更强的不可预测性。为了能够准确地表达事件时间的处理进度,就必须用到水印。 Flink水印的本质是DataStream中的一种特殊元素,每个水印都携带有一个

Apache Beam 大数据处理一站式分析

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 一. 介绍 大数据处理其实经常被很多人低估,缺乏正确的处理体系,其实,如果没有高质量的数据处理流程,人工智能将只有人工而没有智能。现在的趋势是数据体量不断上涨,团队却低估了规模所带来的复杂度。大数据领域泰斗级人物Jesse Anderson曾做过研究,一个组织架构比较合理的人工智能团队,

数据处理!

#1.计算字符串中字母有多少个? //试题const str = "asdfgghjklasdf";//方式1const setnum = (val) => {const obj = str.split("").reduce((accumulator, cur, index) => {accumulator[cur] ? accumulator[cur]++ : (accumulator[c

pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二)

pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二) pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二)DatasetInputs to modelCaption LengthsData pipelineEncoderAttentionDecoder代码数据集初始化 create_input_files.py训练 tr