R - Łączenie wielu kolumn w ramkę danych, przy zachowaniu połączonych danych

Sporo więc szukałem odpowiedzi na to pytanie, ale nie mogę znaleźć odpowiedzi, która spełniałaby moje potrzeby lub rozumienie R.

Po pierwsze, oto kod, który po prostu daje wyobrażenie o tym, jak wygląda mój zestaw danych

df <- data.frame("Year" = 1991:2000, "Subdiv" = 24:28, H1 = c(31.2,34,70.2,19.8,433.7,126.34,178.39,30.4,56.9,818.3),
             H2 = c(53.9,121.5,16.9,11.9,114.6,129.9,221.1,433.4,319.2,52.6))             
> df
   Year Subdiv     H1    H2
1  1991     24  31.20  53.9
2  1992     25  34.00 121.5
3  1993     26  70.20  16.9
4  1994     27  19.80  11.9
5  1995     28 433.70 114.6
6  1996     24 126.34 129.9
7  1997     25 178.39 221.1
8  1998     26  30.40 433.4
9  1999     27  56.90 319.2
10 2000     28 818.30  52.6

Mam więc zestaw danych zawierający obfitość śledzia w różnym wieku w różnych obszarach („Subdiv”) w czasie. H1 oznacza śledzie w wieku 1 lat. Mój prawdziwy zestaw danych zawiera więcej wieków, a także więcej obszarów (i dodatkowe gatunki ryb).

Chciałbym połączyć bogactwo różnych epok w jedną kolumnę, zachowując połączone dane (Rok, Subdiv), a także tworząc nową kolumnę dla Wieku. Tak jak:

       Year Subdiv   Abun   Age
    1  1991     24  31.20    1
    2  1992     25  34.00    1
    3  1993     26  70.20    1
    4  1994     27  19.80    1
    5  1995     28 433.70    1 
    6  1991     24   53.9    2
    7  1992     25  121.5    2
    8  1993     26   16.9    2
    9  1994     27   11.9    2
   10  1995     28  114.6    2

Uwaga: Tak, usunąłem kilka wierszy, ale tylko po to, aby nie tłumić ekranu

Mam nadzieję, że to wystarczająca ilość informacji, aby uczynić to zrozumiałym, czego potrzebuję i komuś pomóc.

Ponieważ mam więcej gatunków ryb, jeśli ktoś chciałby dołączyć również opis dodawania kolumny Gatunki, byłoby to pomocne. Oto kod tych samych danych, po prostu skopiowany dla szprota (Sn):

df <- data.frame("Year" = 1991:2000, "Subdiv" = 24:28, H1 = c(31.2,34,70.2,19.8,433.7,126.34,178.39,30.4,56.9,818.3),
                 H2 = c(53.9,121.5,16.9,11.9,114.6,129.9,221.1,433.4,319.2,52.6),
                 S1 = c(31.2,34,70.2,19.8,433.7,126.34,178.39,30.4,56.9,818.3),
                 S2 = c(53.9,121.5,16.9,11.9,114.6,129.9,221.1,433.4,319.2,52.6)) 

Twoje zdrowie!

Nie sądzę, aby tagi tego pytania były niepowiązane, ale jeśli nie znajdziesz pasujących tagów do mojego pytania, idź i zmień.

questionAnswers(2)

yourAnswerToTheQuestion