跳至主要内容

如何在 R 中转置矩阵:快速教程

在这篇快速教程中,学习在 R 中转置矩阵的三种方法

使用 AI 探索

在 R 编程 环境中,转置矩阵是常见的数据处理任务。在本教程中,我将带您高效掌握如何在 R 中转置矩阵,并展示完成该任务的多种方法。让我们开始吧!

快速答案:如何在 R 中转置矩阵

如果您赶时间,转置矩阵最快的方法是使用 t() 函数。t() 是 R 基础函数,能立即对矩阵进行转置。下面是一个简单示例:

# Creating a sample matrix
my_matrix <- matrix(1:6, nrow = 2, ncol = 3)
print(my_matrix)
      [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
# Transposing the matrix
transposed_matrix <- t(my_matrix)
print(transposed_matrix)
      [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6

什么是转置?

矩阵转置是交换其行和列的操作,将行数据变为列数据,反之亦然。此操作在数据处理时常用于重构数据集,使其更适合特定分析或可视化。例如,考虑一个包含不同城市每日气温的矩阵。对该数据框进行转置会将行(天)与列(城市)对调,从而可能简化如绘图或统计分析等后续操作。

Day

New York

Lost Angeles

Chicago

Day 1

22

25

18

Day 2

20

28

21

转置前的 3 个城市天气数据示例

City

Day 1

Day 2

New York

22

20

Los Angeles

25

28

Chicago

18

21

转置后的 3 个城市天气数据示例

在 R 中转置矩阵的三种方法

基于我们包含不同城市每日气温的矩阵,让我们来探索在 R 中使用多种方法对其进行转置。

方法一:使用 R 基础函数转置矩阵

在 R 中转置矩阵最直接的方法,就是使用前文演示的基础函数 t()。它高效、直接,无需额外包,是快速转置矩阵的首选方案。

# Assume that temparature_matrix is already predefined
print(temperature_matrix)
      New_York Los_Angeles Chicago
Day 1       22          20      25
Day 2       28          18      21
# Transpose temperature_matrix
transposed_matrix <- t(temperature_matrix)

print(transposed_matrix)
            Day 1 Day 2
New_York      22    28
Los_Angeles   20    18
Chicago       25    21

方法二:使用 tidyverse 在 R 中转置矩阵

tidyverse 是 R 中一套强大的工具集,使数据处理高效且一致。尽管 tidyverse 通常用于数据框,您可以先将矩阵转换为数据框,然后使用 tidyr 通过透视的方式实现“转置”。如果您已在使用 tidyverse 进行数据分析,这种方法尤其实用。

library(tidyr)
library(dplyr)
library(tibble)

# Converting the matrix to a data frame for tidyverse manipulation
temperature_df <- as.data.frame(temperature_matrix)

# "Transposing" the matrix by converting to long then wide format
transposed_df <- temperature_df %>%
  rownames_to_column(var = "Day") %>%
  pivot_longer(-Day, names_to = "City", values_to = "Temperature") %>%
  pivot_wider(names_from = City, values_from = Temperature)

print(transposed_df)
# A tibble: 2 × 4
  Day   New_York Los_Angeles Chicago
  <chr>    <dbl>       <dbl>   <dbl>
1 Day 1       22          20      25
2 Day 2       28          18      21

方法三:使用 data.table 在 R 中转置矩阵

与 tidyverse 方法类似,data.table 可用于数据框或数据表。以下展示了先将矩阵转换为数据表后再进行转置的方式:

library(data.table)

# Converting the matrix to a data.table
temperature_dt <- as.data.table(temperature_matrix, keep.rownames = "Day")

# Transposing the matrix by melting and dcasting (similar to pivot_longer and pivot_wider)
transposed_dt <- melt(temperature_dt, id.vars = "Day") %>%
  dcast(variable ~ Day, value.var = "value")

print(transposed_dt)
      variable Day 1 Day 2
1:    New_York    22    28
2: Los_Angeles    20    18
3:     Chicago    25    21

总结思考

在 R 编程 中,转置矩阵是一项基础技能。无论您使用 R 基础函数、tidyverse 中的 tidyr,还是 data.table 包,R 都提供了灵活的选项以满足您的数据需求。若想进一步学习,请查看我们的 R 中使用 tidyr 重塑数据速查表,或者直接开始 R 数据处理技能路径。

Adel Nehme

作者

Adel Nehme

Adel 是一位数据科学教育者、演讲者,以及 DataCamp 的媒体副总裁。他推出了多门关于数据分析、机器学习和数据工程的课程与直播培训,热衷于在组织内推广数据技能与数据素养,并关注技术与社会的交汇。他拥有数据科学与商业分析硕士学位。闲暇时,您常能发现他陪他的猫 Louis 一起玩耍。

主题