📜  R 编程中的 tidyr 包(1)

📅  最后修改于: 2023-12-03 14:46:52.857000             🧑  作者: Mango

R 编程中的 tidyr 包

简介

tidyr 包是一个 R 语言中的数据整理工具。它可以帮助我们轻松地将不同形式的数据整理成 Tidy Data 的形式,从而方便我们进行数据分析和可视化操作。

Tidy Data 概念来源于 Hadley Wickham 在论文 "Tidy Data" 中提出的数据时序,它具备以下三个特征:

  1. 每个变量单独占据一列。
  2. 每个观察单独占据一行。
  3. 每个值单独占据一个单元格。

符合 Tidy Data 规范的数据更加易于处理和分析。

安装

你可以在 R 中使用以下命令安装 tidyr 包:

install.packages("tidyr")
常用函数

下面介绍一些 tidyr 包中常用的函数:

gather()

gather() 函数用于将宽数据(wide format)转换为长数据(long format)。

gather(data, key, value, columns, factor_key = FALSE, na.rm = FALSE)

参数说明:

  • data:需要转换的数据集。
  • key:新生成的变量列名。
  • value:新生成的值列名。
  • columns:需要转换的列名,支持传入多个列名。
  • factor_key:是否将 key 列转换成 factor 类型,默认值为 FALSE
  • na.rm:是否移除缺失值,默认值为 FALSE

示例:

library(tidyr)

data <- data.frame(id = 1:3, name = c("Tom", "Jerry", "Joe"), score_math = c(80, 90, 85), score_eng = c(70, 85, 92))
data_long <- gather(data, subject, score, score_math:score_eng)

print(data_long)

输出结果:

  id  name subject score
1  1   Tom math      80
2  2 Jerry math      90
3  3   Joe math      85
4  1   Tom eng       70
5  2 Jerry eng       85
6  3   Joe eng       92
spread()

spread() 函数用于将长数据(long format)转换为宽数据(wide format)。

spread(data, key, value, fill = NA, convert = FALSE)

参数说明:

  • data:需要转换的数据集。
  • key:需要转换的变量列名。
  • value:新生成的数值列名。
  • fill:缺失值填充值,默认为 NA
  • convert:是否类型转换,默认为 FALSE

示例:

library(tidyr)

data_long <- data.frame(id = c(1, 2, 2, 3), subject = c("math", "math", "eng", "eng"), score = c(80, 90, 85, 92))
data_wide <- spread(data_long, subject, score)

print(data_wide)

输出结果:

  id eng math
1  1  NA   80
2  2  85   90
3  3  92   NA
总结

tidyr 包是一个非常实用的 R 语言中的数据整理工具,提供了多种常用函数方便我们将不同形式的数据整理为 Tidy Data 的形式。掌握 tidyr 包的使用技巧可以大大提升我们的数据处理和分析能力。