将多列因子的数据框架重组为包含因子的一列

时间:2018-04-14 08:12:35

标签: r dataframe apply

您好我的数据框目前是这样的:

Clone ID    Sequence    Factor_1    Factor_2    Factor_3

clonename   seq_data       1            5          4

clonename2  seq_data2      2            1          3

如何有效地重构数据框,以便:

Clone ID    Sequence    Factor    Factor_population

clonename   seq_data   Factor_1          1

clonename   seq_data   Factor_2          5

...

clonename2  seq_data2  Factor_3          3

*为了清晰起见,编辑了表格格式。关于StackOverflow的第一个问题,我尽力清楚地提出这个问题,为那些尝试帮助解决这个问题的人道歉。

1 个答案:

答案 0 :(得分:1)

我们可以使用中的gather功能。 starts_with是来自的函数,可以选择以字符串开头的列。

library(dplyr)
library(tidyr)

dat2 <- dat %>%
  gather(Factor, Factor_population, starts_with("Factor_"))

dat2
#     Clone.ID  Sequence   Factor Factor_population
# 1  clonename  seq_data Factor_1                 1
# 2 clonename2 seq_data2 Factor_1                 2
# 3  clonename  seq_data Factor_2                 5
# 4 clonename2 seq_data2 Factor_2                 1
# 5  clonename  seq_data Factor_3                 4
# 6 clonename2 seq_data2 Factor_3                 3

数据

dat <- read.table(text = "'Clone ID'    Sequence    Factor_1    Factor_2    Factor_3

clonename   seq_data       1            5          4

clonename2  seq_data2      2            1          3",
                  header = TRUE, stringsAsFactors = FALSE)