This is easily accomplished with tidyr::pivot_longer()
.
textFile <- "Volume,Gene1,Gene2,Gene3,Gene4,Gene5
Set 1,1,2,3,4,5
Set 2,6,7,8,9,10
Set 3,11,12,13,14,15"
df <- read.csv(text = textFile,header=TRUE)
library(tidyr)
df %>% pivot_longer(.,-Volume,names_to = "Gene",values_to="Count")
...and the output:
# A tibble: 15 x 3
Volume Gene Count
<chr> <chr> <int>
1 Set 1 Gene1 1
2 Set 1 Gene2 2
3 Set 1 Gene3 3
4 Set 1 Gene4 4
5 Set 1 Gene5 5
6 Set 2 Gene1 6
7 Set 2 Gene2 7
8 Set 2 Gene3 8
9 Set 2 Gene4 9
10 Set 2 Gene5 10
11 Set 3 Gene1 11
12 Set 3 Gene2 12
13 Set 3 Gene3 13
14 Set 3 Gene4 14
15 Set 3 Gene5 15