have already tried quite a lot and even chatgpt could not help me :D
The following case:
library(tidyr)
# create the output dataset
data <- data.frame(
id = 1:12,
f51a_01 = c(1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3),
f51a_02 = c(1, 2, 3, 6, 1, 2, 3, 4, 5, 6, 1, 6),
f51b_01 = c(1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3),
f51b_02 = c(1, 2, 2, 6, 6, 6, 6, 6, 6, 6, 1, 6)
)
expected output:
id var var_01 var_02
1 f51a 1 1
1 f51b 1 1
2 f51a 1 2
2 f51b 1 2
3 f51a 1 3
3 f51b 2 2
4 f51a 1 6
4 f51b 1 6
5 f51a 2 1
5 f51b 1 6
6 f51a 2 2
6 f51b 1 6
7 f51a 2 3
7 f51b 1 6
8 f51a 2 4
8 f51b 1 6
9 f51a 2 5
9 f51b 1 6
10 f51a 2 6
10 f51b 1 6
11 f51a 3 1
11 f51b 3 1
12 f51a 3 6
12 f51b 3 6
My solution so far works, but is not optimal.
data%>%
select(id, matches("f51[a-z]_01"))%>%
pivot_longer(cols = -id, names_to = "var", values_to = "var_01")%>%
mutate(var = str_extract(var, "f51[a-z]"))%>%
left_join(data2%>%
select(id, matches("f51[a-z]_02"))%>%
pivot_longer(cols = -id, names_to = "var", values_to = "var_02")%>%
mutate(var = str_extract(var, "f51[a-z]")))
Glad about every hint. Thanks