您好我的数据框目前是这样的:
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的第一个问题,我尽力清楚地提出这个问题,为那些尝试帮助解决这个问题的人道歉。
答案 0 :(得分:1)
我们可以使用tidyr中的gather
功能。 starts_with
是来自dplyr的函数,可以选择以字符串开头的列。
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)