R 组合多列/堆叠多列

R 组合多列/堆叠多列,r,dataframe,multiple-columns,R,Dataframe,Multiple Columns,所以我有9个专栏 a b c d e f g h i 1 1 t p 1 h p 1 v g 2 2 e h 2 j m 2 c f 3 3 f g 3 k l 3 b d 我想知道我怎样才能把它们做成这样 a b c 1 1 t p 2 2 e h 3 3 f g 4 1 h p 5 2 j m 6 3 k l 7 1 v g 8 2 c f 9 3 b d 通过指定要在向量s的列表中组

所以我有9个专栏

     a b c d e f g h i     
  1  1 t p 1 h p 1 v g
  2  2 e h 2 j m 2 c f 
  3  3 f g 3 k l 3 b d
我想知道我怎样才能把它们做成这样

     a b c
   1 1 t p
   2 2 e h
   3 3 f g
   4 1 h p
   5 2 j m
   6 3 k l
   7 1 v g
   8 2 c f
   9 3 b d

通过指定要在
向量
s的
列表
中组合的列,我们可以使用
基R
重塑

out <- reshape(df1, direction = 'long', 
    varying = list(c('a', 'd', 'g'), c('b', 'e', 'h'),
          c('c', 'f', 'i')))[c('a', 'b', 'c')]
row.names(out) <- NULL
out
#  a b c
#1 1 t p
#2 2 e h
#3 3 f g
#4 1 h p
#5 2 j m
#6 3 k l
#7 1 v g
#8 2 c f
#9 3 b d
数据
df1涉及
purr
的一个选项可以是:

map_dfc(.x = split.default(df, rep(1:3, length.out = length(df))),
        ~ stack(.)[1]) %>%
 setNames(c("a", "b", "c"))

  a b c
1 1 t p
2 2 e h
3 3 f g
4 1 h p
5 2 j m
6 3 k l
7 1 v g
8 2 c f
9 3 b d
df1 <- structure(list(a = 1:3, b = c("t", "e", "f"), c = c("p", "h", 
"g"), d = 1:3, e = c("h", "j", "k"), f = c("p", "m", "l"), g = 1:3, 
    h = c("v", "c", "b"), i = c("g", "f", "d")), 
    class = "data.frame", row.names = c("1", 
"2", "3"))
map_dfc(.x = split.default(df, rep(1:3, length.out = length(df))),
        ~ stack(.)[1]) %>%
 setNames(c("a", "b", "c"))

  a b c
1 1 t p
2 2 e h
3 3 f g
4 1 h p
5 2 j m
6 3 k l
7 1 v g
8 2 c f
9 3 b d