前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tidyverse|tidyr数据重塑之gather,spread(长数据宽数据转化)

Tidyverse|tidyr数据重塑之gather,spread(长数据宽数据转化)

作者头像
生信补给站
发布于 2020-08-05 03:06:00
发布于 2020-08-05 03:06:00
6.9K00
代码可运行
举报
文章被收录于专栏:生信补给站生信补给站
运行总次数:0
代码可运行

长型数据和宽型数据在数据分析中非常常见 ,其中宽型数据更具可读性,长型数据则更适合做分析。

R-tidyr主要有以下几大功能:

  • gather—宽数据转为长数据;
  • spread—长数据转为宽数据;
  • unit—多列合并为一列;
  • separate—将一列分离为多列

unit和separate可参考Tidyverse|数据列的分分合合,一分多,多合一,本文主要介绍利用tidyr包实现长宽数据的转化。

一 载入R包,数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(tidyverse)
#library(tidyr)
#使用mtcars内置数据集
data(mtcars)
head(mtcars)

二 宽数据转为长数据

使用gather函数:gather(data, key, value, … , na.rm = FALSE, convert = FALSE)

其中 data:为待转换的宽数据

key:将原数据框中的所有列赋给一个新变量key

value:将原数据框中的所有值赋给一个新变量value

...:可以指定哪些列聚到一列中 (同reshape2区别

na.rm:是否删除缺失值

1 转换全部列
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#宽转长
mtcars_long <- mtcars %>%
  rownames_to_column("car_ID") %>% 
  gather(key = "variables", value = "values")
head(mtcars_long)
2 部分列保持不变

区别于reshape2,...只将指定变量从宽数据变成长数据

1) 不gather car_ID列 (行名转化而来)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mtcars_long2 <- mtcars %>%
    rownames_to_column("car_ID") %>%
    gather(key = "variables", value = "values",  - car_ID)
head(mtcars_long2)

2)gather 在 mpg:am之间的所有列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mtcars_long3 <- mtcars %>%
    rownames_to_column("car_ID") %>%
    gather(key = "variables", value = "values",  mpg:am)
head(mtcars_long3)

三 长数据转为宽数据

使用spread函数:spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)

data:待转换的长数据

key:需要将变量值拓展为字段的变量

value:需要分散的值

fill:对于缺失值,可将fill的值赋值给被转型后的缺失值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mtcars_wide <- mtcars_long2 %>% 
    spread(variables, values)
head(mtcars_wide)

这实际将原来gather后的结果还原为gather前, 结果与mtcars一样,只是各列的相互位置稍有调整。

参考资料:

Working_in_the_Tidyverse

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 转换全部列
  • 2 部分列保持不变
    • 参考资料:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档