首页 > 解决方案 > 如何使用R将多列堆叠成一列

问题描述

我有以下数据框:

A <- c(3,5,6,7)
B <- c(2,4,5,3)
C <- c(4,6,7,8)
D <- c(2,4,5,3)
gene <- c(1,2,3,4)
df <- data.frame(gene,A,B,C,D)
df
  gene A B C D
1    1 3 2 4 2
2    2 5 4 6 4
3    3 6 5 7 5
4    4 7 3 8 3

如何将每个字母列堆叠到一个名为“count”的新列中,以便有另一个名为“sample”的新列跟踪每个计数值来自的原始列(即,我想要以下输出) :

count sample
  3     A  
  5     A
  6     A
  7     A
  2     B
  4     B
  5     B
  3     B
  4     C
  6     C
  7     C
  8     C
  2     D
  4     D
  5     D
  3     D

抱歉,这很难解释,但上面的输出数据框应该可以清楚地说明。

谢谢

标签: r

解决方案


base Rstack删除第一列后使用

out <- stack(df[-1])
names(out) <- c("count", "sample")

推荐阅读