Je suis relativement nouveau à R, et chaque fois que j'ai besoin de "remodeler" les données, je suis absolument déconcerté. J'ai des données qui ressemble à ceci:Réduire uniquement certaines variables à long format dans R
ont:
ID ever_smoked alcoholic medication dosage
1 1 no no humira/adalimumab 40mg
2 1 no no prednisone 15mg
3 1 no no azathioprine 30mg
4 1 no no rowasa 9mg
5 2 yes no lialda 20mg
6 2 yes no mercaptopurine 1g
7 2 yes no asacol 1600mg
WANT:
ID ever_smoked alcoholic medication
1 1 no no humira/adalimumab, prednisone, azathioprine, rowasa
2 2 yes no lialda, mercaptopurine, asacol
dosage most_recent_med most_recent_dose
1 40mg, 15mg, 30mg, 9mg rowasa 9mg
2 20mg, 1g, 1600mg asacol 1600mg
(S'il vous plaît noter qu'il devrait être de 2 observations et 7 variables).
Essentiellement, je veux (1) seulement réduire quelques-unes des variables, et (2) conserver la première rangée des autres variables, et aussi (3) créer 2 nouvelles variables basées sur les dernières entrées de certains des variables.
Codepour reproduire:
have <- data.frame(ID = c(1, 1, 1, 1, 2, 2, 2),
ever_smoked = c("no", "no", "no", "no", "yes", "yes", "yes"),
alcoholic = c("no", "no", "no", "no", "no", "no", "no"),
medication = c("humira/adalimumab", "prednisone", "azathioprine", "rowasa", "lialda", "mercaptopurine", "asacol"),
dosage = c("40mg", "15mg", "30mg", "9mg", "20mg", "1g", "1600mg"), stringsAsFactors = FALSE)
want <- data.frame(ID = c(1, 2),
ever_smoked = c("no", "yes"),
alcoholic = c("no", "no"),
medication = c("humira/adalimumab, prednisone, azathioprine, rowasa", "lialda, mercaptopurine, asacol"),
dosage = c("40mg, 15mg, 30mg, 9mg", "20mg, 1g, 1600mg"),
most_recent_med = c("rowasa", "asacol"),
most_recent_dose = c("9mg", "1600mg"), stringsAsFactors = FALSE)
Merci.