tengo una trama de datos que sigue el siguiente largo Patrón:transposición/remodelar trama de datos sin "timevar" de largo a gran formato
Name MedName
Name1 atenolol 25mg
Name1 aspirin 81mg
Name1 sildenafil 100mg
Name2 atenolol 50mg
Name2 enalapril 20mg
Y quisiera conseguir a continuación (no me importa si puedo conseguir las columnas a ser nombrados de esta manera, sólo quiero los datos en este formato):
Name medication1 medication2 medication3
Name1 atenolol 25mg aspirin 81mg sildenafil 100mg
Name2 atenolol 50mg enalapril 20mg NA
a través de este mismo sitio me he vuelto familiarish con el paquete de remodelar/reshape2, y se fue a través de varios intentos para tratar de conseguir este para trabajar, pero hasta ahora han fallado.
Cuando intento dcast(dataframe, Name ~ MedName, value.var='MedName')
acabo de conseguir un montón de columnas que son banderas de los nombres de los medicamentos (los valores que consiguen transponerse son 1 o 0) ejemplo:
Name atenolol 25mg aspirin 81mg
Name1 1 1
Name2 0 0
También probamos un dcast(dataset, Name ~ variable)
después de que derritió la conjunto de datos, sin embargo esto sólo escupe la siguiente (solo cuenta el número de medicamentos que cada persona tiene):
Name MedName
Name1 3
name2 2
Por último, he tratado de fundir los datos y luego formar de nuevo usando idvar="Name"
timevar="variable"
(de los cuales son todos sólo Mednam es), sin embargo, esto no parece construido para mi problema, ya que si hay múltiples coincidencias con el idvar, la nueva forma solo toma el primer MedName e ignora el resto.
¿Alguien sabe cómo hacer esto mediante la remodelación u otra función R? Me doy cuenta de que probablemente haya una manera de hacerlo de una manera más desordenada con algunos bucles y condicionales para básicamente dividir y volver a pegar los datos, pero esperaba que hubiera una solución más simple. Muchas gracias!
Gracias por la ayuda, esto funcionó. Mi única preocupación sobre las columnas, es que en mi conjunto de datos actual tengo un número siempre cambiante y nombres de medicamentos, por lo que declarar el MedName = c (Todos los nombres) probablemente sería un poco demasiado, pero agradezco la ayuda, y lo haré. probablemente use este método en otros problemas. – Hotamd6
@ Hotamd6 - no es necesario especificar manualmente todos los nombres - puede hacer un buscar y reemplazar en los nombres de los conjuntos de datos como 'gsub (" MedName. "," Medicamento ", nombres (reshapedtestdata), fixed = TRUE)' para obtener el mismo resultado que @mnel anterior. – thelatemail