Reconstruir datos en columnas con filas fusionadas

Reconstruir datos en columnas con filas fusionadas

tengo los siguientes datos

patient-id  last name   first name  date of birth   value   date of measurement
A1          A           BC          1900-01-01      1       1900-01-03 0:00
A1          A           BC          1900-01-01      2       1900-01-04 0:00
A1          A           BC          1900-01-01      3       1900-01-03 0:00
A1          A           BC          1900-01-01      2       1900-01-02 0:00
A1          A           BC          1900-01-01      1       1900-01-05 0:00
D5          D           EF          1900-01-02      4       1900-01-04 0:00
D5          D           EF          1900-01-02      5       1900-01-03 0:00
D5          D           EF          1900-01-02      4       1900-01-02 0:00
F2          G           HI          1900-01-03      6       1900-01-04 0:00
F2          G           HI          1900-01-03      5       1900-01-01 0:00
F2          G           HI          1900-01-03      6       1900-01-05 0:00

ingrese la descripción de la imagen aquí

Cada paciente tiene un máximo de 10 filas. Quiero fusionarlo en una sola fila por paciente.

Por ejemplo, los datos anteriores se convierten en:

patient-id  last name   first name  date of birth   value1  date of measurement1    value2  date of measurement2    value3  date of measurement3    value4  date of measurement4    value5  date of measurement5    value6  date of measurement6    value7  date of measurement7    value8  date of measurement8    value9  date of measurement9    value10 date of measurement10
A1          A           BC          1900-01-01      1       1900-01-03 0:00 2   1900-01-04 0:00 3   1900-01-03 0:00 2   1900-01-02 0:00 1   1900-01-05 0:00                                     
D5          D           EF          1900-01-02      4       1900-01-04 0:00 5   1900-01-03 0:00 4   1900-01-02 0:00                                                     
F2          G           HI          1900-01-03      6       1900-01-04 0:00 5   1900-01-01 0:00 6   1900-01-05 0:00                                                     

ingrese la descripción de la imagen aquí

¿Alguien sabe cómo hacer esto?

Respuesta1

Puedes hacerlo con una columna auxiliar y una tabla dinámica.

  1. columna auxiliar: agregue una nueva columna en su tabla con fórmula:
    =COUNTIF($A$1:A2,A2)
    Esto asignará números para cada fecha de medición por ID de paciente

ingrese la descripción de la imagen aquí

  1. tabla dinámica:
    • agregue columnas constantes (que solo necesita una vez) como "filas"
    • agregar la columna recién creada como "columnas"
    • agregar columnas para replicar como "valores"
    • asegúrese de que "resumir el campo de valor por" esté configurado en "suma" o "promedio" para cada uno de ellos
    • establecer el formato de número correcto para las fechas
    • esto funciona solo para datos que contienen solo información numérica (= sin texto)

ingrese la descripción de la imagen aquí

Respuesta2

Una solución alternativa, menos elegante que una Pivot Table y que quizás requiera un poco más de trabajo.

Supongamos que sus datos actuales están en una hoja llamada Old.

  1. En Old, asegúrese de que los datos estén ordenados por ID del paciente.
  2. De manera similar a la solución de Máté, agregue una columna auxiliar con la fórmula=COUNTIF($A$1:A2;A2)

Deberías tener algo como esto:

ingrese la descripción de la imagen aquí


  1. Crear una nueva hoja (por ejemplo New)
  2. Copie las columnas A a D de OldaNew
  3. En New, seleccione las columnas A a D, haga clic enDatos > Eliminar duplicados > Ok
  4. Ahora debería tener una línea única por paciente (consulte el área verde a continuación)

Utilice la siguiente captura de pantalla para crear el resto de la hoja:

  1. El área gris son los encabezados dinámicos. Si los copias/pegas 9 veces a la derecha, se actualizarán automáticamente, del 1 al 10.
  2. En el área blanca, hay 2 fórmulas: una para obtener el "valor" y otra para obtener la "fecha de medición". También puedes copiarlos y pegarlos a la derecha y se actualizarán automáticamente.

ingrese la descripción de la imagen aquí

Aquí están los SUMIFS:

=SUMIFS(Old!$E:$E,Old!$G:$G,E$2,Old!$A:$A,$A4)              
=SUMIFS(Old!$F:$F,Old!$G:$G,F$2,Old!$A:$A,$A4)              

Nota:Esto también funciona solo con valores numéricos. Para valores no numéricos, únicos para cada medición y paciente, creo que la única solución sería una macro VBA.

información relacionada