📜  将行名变成列 - R 编程语言(1)

📅  最后修改于: 2023-12-03 15:09:39.212000             🧑  作者: Mango

将行名变成列 - R 编程语言

在 R 编程语言中,我们可以使用 gather() 函数将数据表格中的行名(即行索引)转化为列。

准备数据

我们这里以 mtcars 数据集为例子,显示前5行数据如下:

mtcars[1:5, ]

| | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |--|----|----|------|---|------|----|------|----|----|------|------| |Mazda RX4| 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 | |Mazda RX4 Wag| 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 | |Datsun 710| 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 | |Hornet 4 Drive| 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 | |Hornet Sportabout| 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |

其中第一列包含了车型名称,作为行名存在。为了便于后续的操作,我们先将第一列转化为一列普通的变量,代码如下所示:

library(dplyr)
library(tidyr)

mtcars <- mtcars %>%
  rownames_to_column(var = "model")

这里用到了 rownames_to_column() 函数,作用是将 DataFrame 的行名转化成一列叫做 model 的变量,代码片段返回的结果如下:

| | model | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |-----|----------------|------|-----|------|------|------|-------|------|----|----|------|------| |1 | Mazda RX4 | 21.0 | 6 | 160.0| 110 | 3.90 | 2.620 | 16.46| 0 | 1 | 4 | 4 | |2 | Mazda RX4 Wag | 21.0 | 6 | 160.0| 110 | 3.90 | 2.875 | 17.02| 0 | 1 | 4 | 4 | |3 | Datsun 710 | 22.8 | 4 | 108.0| 93 | 3.85 | 2.320 | 18.61| 1 | 1 | 4 | 1 | |4 | Hornet 4 Drive | 21.4 | 6 | 258.0| 110 | 3.08 | 3.215 | 19.44| 1 | 0 | 3 | 1 | |5 | Hornet Sportabout| 18.7| 8 | 360.0| 175 | 3.15 | 3.440 | 17.02| 0 | 0 | 3 | 2 |

使用 gather() 函数

接下来,我们将 gather() 函数应用到 mtcars

gather(mtcars, key = "variable", value = "value", -model)

其中,key 指定了转化后的变量名,value 指定了变量取值的名称,-model 表示我们将除了 model(即行名)以外的所有列都要转化为一列。

代码片段返回的结果如下:

| | model | variable | value | |---|-----------------|----------|----------| | 1 | Mazda RX4 | mpg | 21.00000 | | 2 | Mazda RX4 Wag | mpg | 21.00000 | | 3 | Datsun 710 | mpg | 22.80000 | | 4 | Hornet 4 Drive | mpg | 21.40000 | | 5 | Hornet Sportabout| mpg | 18.70000 | | ... | ... | ... | ... |

总结

以上就是在 R 编程语言中将行名变成列的方法,使用 gather() 函数操作简单、便于理解、代码清晰可读。