該資料集包含有關 COVID-19 患者的資料。它采用 EXCEL 和 CSV 檔案格式,包含多個變數和超過7000 條記錄(行),這使得手動解決問題變得非常困難且非常耗時。以下是解決問題所需的 4 個最重要的變數(列);1:id
用于識別每條記錄(行),2:day_at_hosp
每天有患者住院,3:sex
患者,4:death
患者最終是否死亡或存活。我想創建一個新變數total_days_at_hosp
,該變數應包含患者住院的總天數。
Old Table:
_______________________________________
| id | day_at_hosp | sex | death |
|_______|_____________|________|________|
| 1 | 0 | male | no |
| 2 | 1 | | |
| 3 | 2 | | |
| 4 | 0 | female | no |
| 5 | 1 | | |
| 6 | 0 | male | no |
| 7 | 0 | female | no |
| 8 | 0 | male | no |
| 9 | 1 | | |
| 10 | 2 | | |
| 11 | 3 | | |
| 12 | 4 | | |
| ... | ... | ... | ... |
| 7882 | 0 | female | no |
| 7883 | 1 | | |
|_______|_____________|________|________|
New Table:
I want to convert table above into table below:
____________________________________________
| id |total_days_at_hosp| sex | death |
|_______|__________________|________|________|
| 1 | 3 | male | no |
| 4 | 2 | male | yes |
| 6 | 1 | male | yes |
| 7 | 1 | female | no |
| 8 | 5 | male | no |
| ... | ... | ... | ... |
| 2565 | 2 | female | no |
|_______|__________________|________|________|
注意:該id
列針對輸入的每條記錄,根據患者在醫院住院的時間長短,為每位患者輸入了多條記錄。變數包含天數:0=住院的day_at_hosp
第一天,1=住院的第二天,...,n=住院的最后一天。變數(列)day_at_hosp
為0的記錄(行)對應于其他列中的所有條目,如果記錄(行)為day_at_hosp
*而不是 0,例如 1,2,3, ...,5 那么它屬于病人在上面,所有相應的變數(列)都留空。但是我需要的資料集應該如下表所示。它應該包括一個從變數 (column)total_days_at_hosp
生成的新變數 (column) day_at_hosp
。新變數(列)total_days_at_hosp
在要進行的統計測驗中更有用,并將替換 variable (column) day_at_hosp
,以便可以洗掉所有空白行。要從舊表移動到新表,所需的程式應該執行以下操作:
day_at_hosp ===> total_days_at_hosp
0
1 ---> 3
2
-------------------------------------
0 ---> 2
1
-------------------------------------
0 ---> 1
-------------------------------------
0 ---> 1
-------------------------------------
0
1
2 ---> 5
3
4
-------------------------------------
...
-------------------------------------
0 ---> 2
1
-------------------------------------
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
另一個沒有虛擬值的公式選項放置在舊/新表的末尾。
1]通過>>創建新表
- 將所有舊表資料復制并粘貼到未使用的區域
- 點擊“自動篩選”
- 在“days_at_hospital”列中選擇 =0 值
- 將招生過濾器復制并粘貼到新表列 F
- 洗掉 G 列行中的所有 0
然后,
2] 在G2
,公式復制下來:
=IF(F2="","",IF(F3="",MATCH(9^9,A:A) 1,MATCH(F3,A:A,0))-MATCH(F2,A:A,0))
備注:如果您的“ID 列”是文本值,公式更改為:
=IF(F2="","",IF(F3="",MATCH("zzz",A:A) 1,MATCH(F3,A:A,0))-MATCH(F2,A:A,0))
uj5u.com熱心網友回復:
很明顯,您的資料是按患者排序的,并且您想要的表格會“更短” - 因此,此答案的起點是將 anAutoFilter
應用于您的原始資料,將過濾條件設定為days_at_hospital = 0
,然后復制此F列的錄取過濾:
洗掉舊的G列資料后,下面的公式可以在單元格中輸入
G2
并復制下來
=INDEX(B:B,MATCH(F3,A:A,0)-1) 1
為使公式簡單,應在舊表和新表的末尾輸入相同的虛擬最大值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/475483.html
上一篇:使用帶有變數的excel內置函式
下一篇:返回列表