<StudyFieldsResponse>
<StudyFieldsList>
<StudyFields Rank="2">
<FieldValues Field="id">
<FieldValue>327635</FieldValue>
</FieldValues>
<FieldValues Field="Gender">
<FieldValue>Male</FieldValue>
<FieldValue>Female</FieldValue>
</FieldValues>
<FieldValues Field="code">
<FieldValue>55905</FieldValue>
</FieldValues>
</StudyFields>
<StudyFields Rank="3">
<FieldValues Field="id">
<FieldValue>555828</FieldValue>
</FieldValues>
<FieldValues Field="Gender">
<FieldValue>Male</FieldValue>
</FieldValues>
<FieldValues Field="code">
<FieldValue>55407-1139</FieldValue>
<FieldValue>77030</FieldValue>
<FieldValue>90901</FieldValue>
<FieldValue>23144</FieldValue>
</FieldValues>
</StudyFields>
</StudyFieldsList>
</StudyFieldsResponse>
I have the above .xml file. I parsed it as follows in order to extract the id, Gender, and code records.
library(XML)
dat <- xmlParse(file = "example.xml")
final_dat <- xmlToDataFrame(nodes = xmlChildren(xmlRoot(dat)[["StudyFieldsList"]]))
names(final_dat) <- c("id", "Gender", "code")
> final_dat
id Gender code
1 327635 MaleFemale 55905
2 555828 Male 55407-1139770309090123144
However, notice that for the first row, there are 2 Genders, male and female. Similarly, for the second one, there are more than 1 codes. How can I expand my data.frame so that the data.frame contains a unique row for each unique id, Gender, and code combination?
> final_dat_expanded
id Gender code
1 327635 Male 55905
2 327635 Female 55905
3 555828 Male 55407-1139
4 555828 Male 77030
5 555828 Male 90901
6 555828 Male 23144