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

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

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/UX14c-vyjy_7p81XmYSFiQ



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

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

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

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

一 载入R包,数据

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 转换全部列

#宽转长
mtcars_long <- mtcars %>%
 rownames_to_column("car_ID") %>%
 gather(key = "variables", value = "values")
head(mtcars_long)


2 部分列保持不变

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

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

mtcars_long2 <- mtcars %>%
rownames_to_column("car_ID") %>%
gather(key = "variables", value = "values",  - car_ID)
head(mtcars_long2)

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

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的值赋值给被转型后的缺失值

mtcars_wide <- mtcars_long2 %>%
spread(variables, values)
head(mtcars_wide)

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

相关文章
|
测试技术 C++ 索引
【NumPy 数组副本 vs 视图、NumPy 数组形状、重塑、迭代】
【NumPy 数组副本 vs 视图、NumPy 数组形状、重塑、迭代】
|
7月前
|
传感器 XML 数据处理
Landsat Collection 2 T1一级数据详细介绍(数据处理过程和几何精度)
Landsat Collection 2 T1一级数据详细介绍(数据处理过程和几何精度)
92 0
|
7月前
|
存储 定位技术 Python
Python中ArcPy实现Excel时序数据读取、反距离加权IDW插值与批量掩膜
Python中ArcPy实现Excel时序数据读取、反距离加权IDW插值与批量掩膜
|
7月前
|
存储 定位技术 Python
Python中ArcPy实现多张栅格遥感影像批量相减求差值
Python中ArcPy实现多张栅格遥感影像批量相减求差值
|
数据挖掘 Linux Python
R语言中实现多维数据交并补集合运算,利用tidyverse系列包,intersect、union、setdiff
R语言中实现多维数据交并补集合运算,利用tidyverse系列包,intersect、union、setdiff
R语言中实现多维数据交并补集合运算,利用tidyverse系列包,intersect、union、setdiff
ENVI_IDL:批量对Modis Swath产品进行均值运算+解析
ENVI_IDL:批量对Modis Swath产品进行均值运算+解析
178 0
ENVI_IDL:批量对Modis Swath产品进行均值运算+解析
|
存储 关系型数据库 数据挖掘
R语言-Chunk大型数据框与稀疏矩阵应对 as.matrix溢出异常 “problem too large”
本文提出一种在R里面将大型数据集通过分块的方式转换出 DataFrame和 SparseMatrix的方法,能有效避免内存溢出、程序崩溃等严重问题。
292 0
|
机器学习/深度学习 存储 并行计算
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
【Pytorch】Tensor的分块、变形、排序、极值与in-place操作
582 0
|
人工智能 测试技术
cf1653c通过操作让数组序列呈现某种规律 C. Differential Sorting
cf1653c通过操作让数组序列呈现某种规律 C. Differential Sorting
85 0
|
Linux 数据处理 Ruby
cdo (Climate Data Operators ) 常用命令介绍:(查看文件信息、多文件合并、数据裁剪、数据插值、数据计算。。)
cdo (Climate Data Operators ) 常用命令介绍:(查看文件信息、多文件合并、数据裁剪、数据插值、数据计算。。)
cdo (Climate Data Operators ) 常用命令介绍:(查看文件信息、多文件合并、数据裁剪、数据插值、数据计算。。)
下一篇
DataWorks