У меня есть кадр данных, следующий за длинным шаблоном ниже:
Name MedName
Name1 atenolol 25mg
Name1 aspirin 81mg
Name1 sildenafil 100mg
Name2 atenolol 50mg
Name2 enalapril 20mg
И хотелось бы получить ниже (меня не волнует, могу ли я получить столбцы, которые будут названы так, просто хочу данные в этом формате):
Name medication1 medication2 medication3
Name1 atenolol 25mg aspirin 81mg sildenafil 100mg
Name2 atenolol 50mg enalapril 20mg NA
С помощью этого самого сайта я познакомился с пакетом reshape/reshape2 и предпринял несколько попыток заставить его работать, но до сих пор не удалось.
Когда я пытаюсь dcast(dataframe, Name ~ MedName, value.var='MedName')
, я просто получаю кучу столбцов, которые являются флагами имен лекарств (значения, которые передаются транспонированными, равны 1 или 0):
Name atenolol 25mg aspirin 81mg
Name1 1 1
Name2 0 0
Я также попробовал a dcast(dataset, Name ~ variable)
после того, как я расплавил набор данных, однако это просто выплевывает следующее (просто подсчитывает, сколько у каждого человека есть):
Name MedName
Name1 3
name2 2
Наконец, я попытался расплавить данные, а затем изменил форму с помощью idvar="Name"
timevar="variable"
(из которых все просто являются межд. именами), однако это не похоже на мою проблему, поскольку, если есть несколько совпадений с idvar, reshape просто берет первое имя MedName и игнорирует остальные.
Кто-нибудь знает, как это сделать, используя функцию reshape или другую функцию R? Я понимаю, что, вероятно, есть способ сделать это более беспорядочно, а некоторые из циклов и условных выражений - в основном разделять и повторно вставлять данные, но я надеялся, что существует более простое решение. Большое вам спасибо!