如何在 R 中将多个列合并为一个具有不同名称的列
How to combine multiple columns into one with a different name in R
我正在尝试将 18 列归为一列。如下图所示。
我的数据是这样的
Data
我希望我的输出看起来像这样:(主题和 TGroup 是 ordered/named 随机)
Subject TGroup A
1 positive 0
2 neutral 1
3 negative 1
4 positive 0
我将数据转换为长格式,但我们可以只提取名称的第一部分并使用 names_pattern
将所有值放入一列中。这就是您要找的吗?我对所需的输出有点不清楚。
library(tidyverse)
df %>%
pivot_longer(-c(Subject, TGroup),
names_to = c('.value'),
names_pattern = '(.*?)_.*')
输出
Subject TGroup A
<dbl> <chr> <dbl>
1 1 positive 0
2 1 positive 0
3 1 positive 1
4 2 positive 1
5 2 positive 1
6 2 positive 1
7 3 positive 1
8 3 positive 0
9 3 positive 1
10 4 positive 1
11 4 positive 1
12 4 positive 0
数据
df <- structure(
list(
Subject = c(1, 2, 3, 4),
TGroup = c("positive", "positive", "positive", "positive"),
A_1 = c(0, 1, 1, 1),
A_2 = c(0, 1, 0, 1),
A_3 = c(1, 1, 1, 0)
),
class = "data.frame",
row.names = c(NA,-4L)
)
我正在尝试将 18 列归为一列。如下图所示。
我的数据是这样的
Data
我希望我的输出看起来像这样:(主题和 TGroup 是 ordered/named 随机)
Subject TGroup A
1 positive 0
2 neutral 1
3 negative 1
4 positive 0
我将数据转换为长格式,但我们可以只提取名称的第一部分并使用 names_pattern
将所有值放入一列中。这就是您要找的吗?我对所需的输出有点不清楚。
library(tidyverse)
df %>%
pivot_longer(-c(Subject, TGroup),
names_to = c('.value'),
names_pattern = '(.*?)_.*')
输出
Subject TGroup A
<dbl> <chr> <dbl>
1 1 positive 0
2 1 positive 0
3 1 positive 1
4 2 positive 1
5 2 positive 1
6 2 positive 1
7 3 positive 1
8 3 positive 0
9 3 positive 1
10 4 positive 1
11 4 positive 1
12 4 positive 0
数据
df <- structure(
list(
Subject = c(1, 2, 3, 4),
TGroup = c("positive", "positive", "positive", "positive"),
A_1 = c(0, 1, 1, 1),
A_2 = c(0, 1, 0, 1),
A_3 = c(1, 1, 1, 0)
),
class = "data.frame",
row.names = c(NA,-4L)
)