在R语言中,可以使用tidyverse
包中的pivot_longer()
函数来实现将两组列进行转换的操作。
下面是一个示例代码:
library(tidyverse)
# 创建一个示例数据框
df <- tibble(
id = 1:3,
var1_1 = c("A", "B", "C"),
var1_2 = c("D", "E", "F"),
var1_3 = c("G", "H", "I"),
var2_1 = c(1, 2, 3),
var2_2 = c(4, 5, 6),
var2_3 = c(7, 8, 9)
)
# 使用pivot_longer函数进行转换
df_longer <- df %>%
pivot_longer(
cols = starts_with("var"), # 需要转换的列
names_to = c(".value", "group"), # 指定新列名的形式
names_pattern = "(var\\d)_(\\d)" # 正则表达式匹配模式
)
# 打印转换后的数据框
print(df_longer)
运行以上代码,将会得到如下输出:
# A tibble: 9 x 4
id group var1 var2
1 1 1 A 1
2 1 2 D 4
3 1 3 G 7
4 2 1 B 2
5 2 2 E 5
6 2 3 H 8
7 3 1 C 3
8 3 2 F 6
9 3 3 I 9
在这个示例中,我们使用pivot_longer()
函数将var1_1
、var1_2
、var1_3
和var2_1
、var2_2
、var2_3
这两组列进行了转换。转换后的数据框中新增了两列group
和var
,其中group
列表示原始数据中的组别,var
列表示原始数据中的值。