使用合併的行重建列數據

使用合併的行重建列數據

我有以下數據

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

在此輸入影像描述

每位患者最多有 10 行。我想將每個患者合併為一行。

例如上面的數據就變成:

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                                                     

在此輸入影像描述

有人知道該怎麼做嗎?

答案1

您可以使用輔助列和資料透視表來完成此操作

  1. 輔助列:在表格中新增一個新列,其中包含公式:
    =COUNTIF($A$1:A2,A2)
    這將為每個患者 ID 的每個測量日期分配數字

在此輸入影像描述

  1. 數據透視表:
    • 新增常數列(您只需要一次)作為“行”
    • 將新建立的列新增為“列”
    • 新增要複製為“值”的列
    • 確保每個欄位的“匯總值欄位依據”設定為“總和”或“平均值”
    • 為日期設定正確的數字格式
    • 這僅適用於僅包含數字資訊的資料(= 無文字)

在此輸入影像描述

答案2

另一種解決方案,不如資料透視表優雅,並且可能需要更多工作。

假設您目前的資料位於名為 的工作表中Old

  1. 在 中Old,確保資料按患者 ID 排序
  2. 與 Máté 的解決方案類似,添加一個帶有公式的輔助列=COUNTIF($A$1:A2;A2)

你應該有這樣的東西:

在此輸入影像描述


  1. 建立一個新工作表(例如New
  2. 將 A 列到 D 列複製OldNew
  3. 在 中New,選擇 A 至 D 列,按一下資料>刪除重複項>確定
  4. 現在您應該為每位患者分配一條獨特的線路(請參見下面的綠色區域)

使用下面的螢幕截圖來建立工作表的其餘部分:

  1. 灰色區域是動態標題。如果您在右側複製/貼上它們 9 次,它們將自動更新,從 1 到 10。
  2. 在白色區域,有2個公式:一個用於獲取“值”,一個用於獲取“測量日期”。您也可以將它們複製/貼上到右側,它們會自動更新。

在此輸入影像描述

這裡有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)              

筆記:這也僅適用於數值。對於每次測量和患者所特有的非數值,我相信唯一的解決方案是 VBA 巨集。

相關內容