Rbind два вектора в R

У меня есть сведения.кадр с несколькими столбцами я хотел бы объединить в один столбец в новых данных.рамка.

df1 <- data.frame(col1 = 1:3, col2 = 4:6, col3 = 7:9)

Как создать новые данные.кадр с одним столбцом, который равен 1: 9?

6 ответов


С data.frames-это, по сути, списки столбцов,unlist(df1) даст вам один большой вектор всех значений. Теперь вы можете просто построить новый data.frame из нее:

data.frame(col = unlist(df1))

Если вам тоже нужен индикатор:

stack(df1)
#   values  ind
# 1      1 col1
# 2      2 col1
# 3      3 col1
# 4      4 col2
# 5      5 col2
# 6      6 col2
# 7      7 col3
# 8      8 col3
# 9      9 col3

просто чтобы предоставить полный набор способов сделать это, вот tidyr путь.

library(tidyr)
gather(df1)
   key value
1 col1     1
2 col1     2
3 col1     3
4 col2     4
5 col2     5
6 col2     6
7 col3     7
8 col3     8
9 col3     9

еще одно использование c функция:

data.frame(col11 = c(df1,recursive=TRUE))
      col11
col11   1
col12   2
col13   3
col21   4
col22   5
col23   6
col31   7
col32   8
col33   9

вы можете попробовать:

as.data.frame(as.vector(as.matrix(df1)))
#  as.vector(as.matrix(df1))
#1                         1
#2                         2
#3                         3
#4                         4
#5                         5
#6                         6
#7                         7
#8                         8
#9                         9

другой подход, только для использования Reduce...

data.frame(Reduce(c, df1))