美文网首页R基础知识统计分析方法R数据分析workshop
R数据科学 数据清洗透视-1 相关函数 gather(), sp

R数据科学 数据清洗透视-1 相关函数 gather(), sp

作者: 天地本无心 | 来源:发表于2020-08-31 12:29 被阅读0次

R数据科学最直接,也最让人感到兴奋的过程就是数据可视化,但是能够直接用来进行可视化的数据少之又少,实际分析中基本碰不到,所以就需要对数据进行数据清洗过程。

在R中,我们最常见的数据类型就是数据框。对于数据框而言,每一列就是一个变量(variable),每一行就是一个观测(observation),而每个单元格的值,就是观测值(values)。

Fig1: Adapted from book of Hadley Wickham

我们可以通过一个例子来直观地感受一下。

attach(iris)
mini_iris <- iris[c(1,51,101),]
mini_iris
> mini_iris
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
51           7.0         3.2          4.7         1.4 versicolor
101          6.3         3.3          6.0         2.5  virginica

其中花萼长度,花萼宽度,花瓣长度,花瓣宽度,以及品质都是变量(vairable)名,序号1,51,101代表的是三条观测记录,单元格里代表的是每一个观测值。

这个时候,我们需要将行名拆除,并且把行名塞进列里面,单元格的数字也变成一个新列,并且每一行只有一个观测值。我们需要怎样操作呢?

这时候就可以用到gather()函数。

> gather(mini_iris, key = "flower_attr",value = "attr_value", Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
#如果要变换的variable实在是太多,无法一一指定,可以通过“-”反选一些不需要的列。
> gather(mini_iris, key = "flower_attr",value = "attr_value", -Species)

都会得到如下结果

      Species  flower_attr attr_value
1      setosa Sepal.Length        5.1
2  versicolor Sepal.Length        7.0
3   virginica Sepal.Length        6.3
4      setosa  Sepal.Width        3.5
5  versicolor  Sepal.Width        3.2
6   virginica  Sepal.Width        3.3
7      setosa Petal.Length        1.4
8  versicolor Petal.Length        4.7
9   virginica Petal.Length        6.0
10     setosa  Petal.Width        0.2
11 versicolor  Petal.Width        1.4
12  virginica  Petal.Width        2.5

而spread()函数的功能正好相反。是将行里面的数据又还到列里面去。

attach(iris)
mini_iris <- iris[c(1,51,101),]
flatted_data <- gather(mini_iris, key = "flower_attr",value = "attr_value", -Species)
spread(flatted_data, flower_attr)
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
51           7.0         3.2          4.7         1.4 versicolor
101          6.3         3.3          6.0         2.5  virginica

(完)

相关文章

  • R数据科学 数据清洗透视-1 相关函数 gather(), sp

    R数据科学最直接,也最让人感到兴奋的过程就是数据可视化,但是能够直接用来进行可视化的数据少之又少,实际分析中基本碰...

  • R数据科学 数据清洗透视-2 相关函数 pivot_longer

    在上一篇文章中介绍了数据清晰透视相关的函数gather()和spread(),虽然函数名称看起来简单,但是简单也就...

  • gather()和spread()函数

    gather() 和 spread() 这两个函数在tidyr这个package里,是专门用来做数据清洗的函数. ...

  • 数据分析 第四章 数据处理

    数据清洗 一. 重复数据的处理 1. 函数法 2. 高级筛选法 3. 数据透视表法 4. 删除重复数据 通过菜单操...

  • 《Learning R》笔记 Chapter 13 Clean

    数据清洗是数据分析中最为繁杂头疼的部分。 字符串清洗 R自带函数 grep,grepl和regexpr是R自带的三...

  • Excel数据分析

    数据导入 文本导入 数据库导入 网站导入 数据清洗 数据透视表法 菜单删除法 条件格式标识法 高级筛选法 函数法 ...

  • R语言笔记Day1(六 tidyr)

    1、tidyr包的下述四个函数用法: 1)gather—宽数据转为长数据; 2)spread—长数据转为宽数据; ...

  • 12-1 tidyr dplyr stringr

    tidyr dplyr stringr “R数据科学” R1:tidyr 核心函数 处理NA: R2:dply...

  • R数据科学笔记:4

    本次笔记整理了第一部分《探索》,具体函数的用法还是要去之前的笔记看一下R数据科学笔记:1R数据科学笔记:2R数据科...

  • 长宽数据转换

    reshape2的melt 函数完成 这里我们重点用gather函数(tidyl里面的)1.构建数据集 转换前数据...

网友评论

    本文标题:R数据科学 数据清洗透视-1 相关函数 gather(), sp

    本文链接:https://www.haomeiwen.com/subject/jcsusktx.html