Edit: Included @onyambu suggestion:
library(tidyverse)
gather(head(iris, 3), 'key', 'value', -Species)
#> Species key value
#> 1 setosa Sepal.Length 5.1
#> 2 setosa Sepal.Length 4.9
#> 3 setosa Sepal.Length 4.7
#> 4 setosa Sepal.Width 3.5
#> 5 setosa Sepal.Width 3.0
#> 6 setosa Sepal.Width 3.2
#> 7 setosa Petal.Length 1.4
#> 8 setosa Petal.Length 1.4
#> 9 setosa Petal.Length 1.3
#> 10 setosa Petal.Width 0.2
#> 11 setosa Petal.Width 0.2
#> 12 setosa Petal.Width 0.2
Created on 2021-06-01 by the reprex package (v2.0.0)
library(tidyverse)
gather(head(iris, 3), "Sepal.Length","Sepal.Width", "Petal.Length", "Petal.Width", key = 'Sepal_or_Petal', value = 'value' )
#> Species Sepal_or_Petal value
#> 1 setosa Sepal.Length 5.1
#> 2 setosa Sepal.Length 4.9
#> 3 setosa Sepal.Length 4.7
#> 4 setosa Sepal.Width 3.5
#> 5 setosa Sepal.Width 3.0
#> 6 setosa Sepal.Width 3.2
#> 7 setosa Petal.Length 1.4
#> 8 setosa Petal.Length 1.4
#> 9 setosa Petal.Length 1.3
#> 10 setosa Petal.Width 0.2
#> 11 setosa Petal.Width 0.2
#> 12 setosa Petal.Width 0.2
Created on 2021-06-01 by the reprex package (v2.0.0)
Other way:
library(tidyverse)
gather(head(iris, 3), starts_with('Sepal') | starts_with('Petal') , key = 'Sepal_or_Petal', value = 'value' )
#> Species Sepal_or_Petal value
#> 1 setosa Sepal.Length 5.1
#> 2 setosa Sepal.Length 4.9
#> 3 setosa Sepal.Length 4.7
#> 4 setosa Sepal.Width 3.5
#> 5 setosa Sepal.Width 3.0
#> 6 setosa Sepal.Width 3.2
#> 7 setosa Petal.Length 1.4
#> 8 setosa Petal.Length 1.4
#> 9 setosa Petal.Length 1.3
#> 10 setosa Petal.Width 0.2
#> 11 setosa Petal.Width 0.2
#> 12 setosa Petal.Width 0.2
Created on 2021-06-01 by the reprex package (v2.0.0)