将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)
X1tidyr::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