EDIT:
Upon further examination, this dataset is way more insane than I previously believed.
Values have been encapsulated in the column names!
My dataframe looks like this:
| ID | Year1_A | Year1_B | Year2_A | Year2_B |
|----|---------|---------|---------|---------|
| 1  | a       | b       | 2a      | 2b      |
| 2  | c       | d       | 2c      | 2d      |
I am searching for a way to reformat it as such:
| ID | Year | _A  | _B  |
|----|------|-----|-----|
| 1  | 1    | a   |  b  |
| 1  | 2    | 2a  |  2b |
| 2  | 1    | c   |  d  |
| 2  | 2    | 2c  |  2d | 
The answer below is great, and works perfectly, but the issue is that the dataframe needs more work -- somehow possibly be spread back out, so that each row has 3 columns.
My best idea was to do merge(df, df, by="ID") and then filter out the unwanted rows but this is quickly becoming unwieldy.
df <- data.frame(ID = 1:2, Year1_A = c('a', 'c'), Year1_B = c('b','d' ), Year2_A = c('2a', '2c'), Year2_B = c('2b', '2d'))
 
    