Konwertowanie ramki danych z formatu „szerokiego” na „długi” w R

Mam następującą ramkę danych:

 df = data.frame(A_1 = c(1,2,3), A_2 = c(4,5,6), A_3 = c(7,8,9), B_1 = c(10, 11, 12), B_2 = c(13, 14, 15), B_3 = c(16, 17, 18))

 #> df
 #  A_1 A_2 A_3 B_1 B_2 B_3
 #1   1   4   7  10  13  16
 #2   2   5   8  11  14  17
 #3   3   6   9  12  15  18

Nazwy kolumn zawierają zarówno literę, jak i liczbę. Litera odnosi się do określonej zmiennej (np. A jest czynnikiem, B jest czynnikiem), podczas gdy liczby w nazwach kolumn odnoszą się do osób. Innymi słowy, każda osoba ma wartości A i B: A_1 i B_1 są kolumnami dlaIndywidualny 1i A_2, B_2 są kolumnami dlaOsoba prywatna 2itd.

Chciałbym uzyskać następujący wynik: zauważ, że wszystkie kolumny „A” są scalone w jedną kolumnę „A”, a to samo dotyczy kolumn „B” itd.:

   A  B
 # 1 10
 # 2 11
 # 3 12
 # 4 13
 # 5 14
 # 6 15
 # 7 16
 # 8 17
 # 9 18

Czy jest jakiś łatwy sposób na osiągnięcie tego? Proszę zauważyć, że moja prawdziwa ramka danych zawiera więcej niż 20 różnych kolumn liter (A, B, C, ...), każda litera ma trzy podkolumny (np .: A_1, A_2, A_3).

Dzięki!!

questionAnswers(3)

yourAnswerToTheQuestion