将R中的所有列与列名称合并

将R中的所有列与列名称合并,r,dataframe,dplyr,tidyverse,R,Dataframe,Dplyr,Tidyverse,我有以下数据 > df X1 X2 X3 1 3 4 1 0 0 1 1 0 我想合并所有列,以便最终输出 new colName 1 X1 1 X1 1 X1 3 X2 0 X2 1 X2 4 X3 0 X3 0 X3 您可以尝试堆叠stack > setNames(stack(df),c("new","colName")) new colName 1 1

我有以下数据

> df
X1  X2  X3 
1   3   4  
1   0   0  
1   1   0 
我想合并所有列,以便最终输出

new colName
1     X1
1     X1
1     X1
3     X2
0     X2
1     X2
4     X3
0     X3
0     X3

您可以尝试堆叠
stack

> setNames(stack(df),c("new","colName"))
  new colName
1   1      X1
2   1      X1
3   1      X1
4   3      X2
5   0      X2
6   1      X2
7   4      X3
8   0      X3
9   0      X3
数据

> dput(df)
structure(list(X1 = c(1L, 1L, 1L), X2 = c(3L, 0L, 1L), X3 = c(4L, 
0L, 0L)), class = "data.frame", row.names = c(NA, -3L))

您可以尝试使用
tidyr

library(tidyr)

X1 <- c(1,1,1)
X2 <- c(3,0,1)
X3 <- c(4,0,0)

df <- data.frame(X1, X2, X3)

df <- df %>%
  gather(new, colname, X1, X2, X3)

print(df)

  new colname
1  X1       1
2  X1       1
3  X1       1
4  X2       3
5  X2       0
6  X2       1
7  X3       4
8  X3       0
9  X3       0
library(tidyr)
X1
tidyr::pivot_longer(df,everything(),name_to='colName',values_to='new')
这可能会有所帮助
library(tidyr)

X1 <- c(1,1,1)
X2 <- c(3,0,1)
X3 <- c(4,0,0)

df <- data.frame(X1, X2, X3)

df <- df %>%
  gather(new, colname, X1, X2, X3)

print(df)

  new colname
1  X1       1
2  X1       1
3  X1       1
4  X2       3
5  X2       0
6  X2       1
7  X3       4
8  X3       0
9  X3       0