Here is my initial data.
df <- data.frame(v1 = c("a", "a", "a", "a", "a", "a"),
v5 = c("c1", "c2", NA, "c1", "c2", NA),
v6 = c(20, 30, NA, 14, 26, NA),
v7 = c("d1", "d2", "d3", "d1", "d2", "d3"),
v8 = c(2, 3, 4, 5, 6, 7))
v1 v5 v6 v7 v8
1 a c1 20 d1 2
2 a c2 30 d2 3
3 a <NA> <NA> d3 4
4 a c1 14 d1 5
5 a c2 26 d2 6
6 a <NA> <NA> d3 7
I'd like to convert it to one with long format like below.
v1 Variable Var_category var_value
1 a v5 c1 20
2 a v5 c2 30
3 a v7 d1 2
4 a v7 d2 3
5 a v7 d3 4
6 a v5 c1 14
7 a v5 c2 26
8 a v6 d1 5
9 a v6 d2 6
10 a v6 d3 7
How can I do this in R?
I tried using pivot_longer() and gather() but could not find the correct way to do this since it's not either traditional long format or traditional wide format I guess.