📜  R 编程中的数据重塑(1)

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

R 编程中的数据重塑介绍

在 R 编程中,数据重塑是非常重要的数据处理技巧。它允许你将不同的数据集格式转换为你所需要的格式,并且更方便地进行分析和可视化。

数据重塑的基本操作

数据重塑包括以下几个基本操作:

  1. 数据的旋转(Pivoting):将长表格转换为宽表格
  2. 数据的镶嵌(Melting):将宽表格转换为长表格
  3. 数据的重命名(Renaming):给数据集中的变量和值赋予具体含义的名字
  4. 数据的合并(Merging):将多个数据集合并为一个
  5. 数据的拆分(Splitting):将一个数据集拆分为多个

接下来,我们将分别介绍这五个基本操作的用法。

数据的旋转(Pivoting)

数据的旋转可以将长表格转换为宽表格。在长表格中,每行代表一个观测,每列代表一个变量。而在宽表格中,每行代表一个变量,每列代表一个观测。

R 中的 tidyr 包提供了非常方便的函数 pivot_wider() 来实现数据的旋转。

library(tidyr)
wide_table <- pivot_wider(long_table, names_from = variable_name, values_from = variable_value)
数据的镶嵌(Melting)

数据的镶嵌可以将宽表格转换为长表格。在宽表格中,每行代表一个变量,每列代表一个观测。而在长表格中,每行代表一个观测,每列代表一个变量。

R 中的 tidyr 包提供了非常方便的函数 pivot_longer() 来实现数据的镶嵌。

library(tidyr)
long_table <- pivot_longer(wide_table, cols = c(first_variable:last_variable), names_to = "variable_name", values_to = "variable_value")
数据的重命名(Renaming)

数据的重命名可以为数据集中的变量和值赋予具体含义的名字。可以使用 R 中的 dplyr 包提供的 rename() 和 recode() 函数来实现。

library(dplyr)
library(tibble)

# 重命名变量
df_renamed <- df %>%
              rename(new_variable_name = old_variable_name)

# 重新编码值
df_recode <- df %>%
             mutate(variable_value = recode(variable_value, "old_value1" = "new_value1", "old_value2" = "new_value2"))
数据的合并(Merging)

数据的合并可以将多个数据集合并为一个。可以使用 R 中的 dplyr 包提供的 join() 函数来实现。

library(dplyr)

# 内连接
df_merged_inner <- inner_join(df1, df2, by = "variable_name")
# 左连接
df_merged_left <- left_join(df1, df2, by = "variable_name")
# 右连接
df_merged_right <- right_join(df1, df2, by = "variable_name")
# 全连接
df_merged_full <- full_join(df1, df2, by = "variable_name")
数据的拆分(Splitting)

数据的拆分可以将一个数据集拆分为多个。可以使用 R 中的 tidyr 包提供的 separate() 和 unite() 函数来实现。

library(tidyr)

# 拆分变量值
df_split <- df %>%
            separate(variable_name, into = c("var1", "var2", "var3"), sep = "-")

# 合并变量值
df_unite <- df_split %>%
            unite(variable_name, var1, var2, var3, sep = "-")
总结

数据重塑是 R 编程中非常重要的数据处理技巧。在实际工作中,你会经常遇到需要将不同格式的数据集合并和转换的情况。本文简要介绍了五个基本操作:数据的旋转、镶嵌、重命名、合并和拆分,并且提供了在 R 中实现这些操作的代码段。