
I began by assigning each row a RecordID then transposed the data grouped by said RecordID. In the transpose tool I deselected all fields as data fields, and then selected F1,F2, F3 and F38. This left me with only the required fields when pivoted into columns. I then added 3 to the "Column" field in the Questions data to account for the first three reference fields in the Data stream. I then added an F as a prefix to this.
This then gave me my join fields. Following this I simply Crosstabbed the data back, dynamically renamed from the first row of data, parsed the Age data to split into the two data fields and named accordingly.

Simple.