问题
I have a df structured like this, but with a large number of columns and rows:
A B C D
1 4 3 3
and I want to obtain a df with a single column, made by the concatenation of all the previous elements:
A
1
B
4
C
3
D
3
How can I do? Better if solutions comprise the use of dplyr.
回答1:
unlist
and wrap it in data.frame
data.frame(col = unlist(df), row.names = NULL)
# col
#1 A
#2 1
#3 B
#4 4
#5 C
#6 3
#7 D
#8 3
Or making it as tibble
library(tibble)
tibble(col = unlist(df))
# col
# <fct>
#1 A
#2 1
#3 B
#4 4
#5 C
#6 3
#7 D
#8 3
Another option mentioned by @Sotos is stack
but it needs columns of class characters
df[] <- lapply(df, as.character)
stack(df)[1]
data
df <- read.table(text = "A B C D
1 4 3 3")
回答2:
In tidyverse
, use gather
library(tidyverse)
gather(df) %>%
select(value)
来源:https://stackoverflow.com/questions/55025372/concatenate-multiple-columns-into-one-with-dplyr