前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R数据科学-2(tidyr)

R数据科学-2(tidyr)

作者头像
Jamesjin63
发布2022-11-03 14:48:57
9200
发布2022-11-03 14:48:57
举报
文章被收录于专栏:EpiHub

R数据科学-2

是用于清洗数据的工具,如dplyr一样,其中每一列都是变量,每一行都是观察值,并且每个单元格都包含一个值。 “ tidyr”包含用于更改数据集的形状(旋转)和层次结构(嵌套和“取消嵌套”),将深度嵌套的列表转换为矩形数据框(“矩形”)以及从字符串列中提取值的工具。它还包括用于处理缺失值(隐式和显式)的工具。

今天就介绍以下在数据清洗工作时,经常会遇到三个问题:

`1. 宽数据变成长数据(ggplot画图常用)

  1. 长数据变成宽数据
  2. 根据值生成重复列数据 `

这些都是为数据画图,或者分析做准备工作。以前是reshape包的内容,当然reshape可以做,但是现在tidyr 处理起来更简洁方便,快速。易于理解。

数据长宽转化

创建一个数据df,然后来进行数据长宽转化实例操作。

image.png

宽数据转成长数据,这里使用gather函数,gathe函数涉及三个参数

gather("key", "value", x, y, z)

代码语言:javascript
复制
library(tidyverse)

# creat data 
df=tibble(id=c(1:3),
          Shanghai=c(2,5,3),
          Beijing=c(12,23,16),
          Guangdong=c(7,3,6))
df
# A tibble: 3 x 4
     id Shanghai Beijing Guangdong
  <int>    <dbl>   <dbl>     <dbl>
1     1        2      12         7
2     2        5      23         3
3     3        3      16         6

## 1. long data
df_a=df %>% gather("Name","value",-id)

df_a
# A tibble: 9 x 3
     id Name      value
  <int> <chr>     <dbl>
1     1 Shanghai      2
2     2 Shanghai      5
3     3 Shanghai      3
4     1 Beijing      12
5     2 Beijing      23
6     3 Beijing      16
7     1 Guangdong     7
8     2 Guangdong     3
9     3 Guangdong     6

## 2. wide data
df_a %>% spread("Name",-id)
# A tibble: 3 x 4
     id Beijing Guangdong Shanghai
  <int>   <dbl>     <dbl>    <dbl>
1     1      12         7        2
2     2      23         3        5
3     3      16         6        3
宽数据转成长数据,这里使用spread函数,spread函数涉及2个参数

df %>% spread(key, value)

image.png

重复列变量

有时候会碰到,需要新增一列是重复该变量的多少次,如上述例子中,

上海id=1的有2个,然后重复shanghai2次,5次,3次,形成新增一列。

在tidyr中很简单的uncount函数就可以实现:

uncount(data, weights, .remove = TRUE, .id = NULL)

代码语言:javascript
复制
df_c=df_a %>% filter(!Name=="Beijing")
# Methods 1
df_c %>% uncount(value) %>% 
  rename(new=Name) 
# Methods 2
data.frame(new = rep(df_c$Name,df_c$value))

image.png

参考

  1. https://tidyr.tidyverse.org
  2. https://github.com/tidyverse/tidyr
  3. Manipulating, analyzing and exporting data with tidyverse
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R数据科学-2
    • 数据长宽转化
      • 宽数据转成长数据,这里使用gather函数,gathe函数涉及三个参数
      • 宽数据转成长数据,这里使用spread函数,spread函数涉及2个参数
    • 重复列变量
    • 参考
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档