我正在处理已执行手术的数据库。
数据库的每一行包含患者的 ID、手术日期和进行的手术。
一名患者可以接受多次手术,并且每次手术可以不同。
我想要获取的是每个患者进行的手术次数,第一次手术和最后一次手术是什么。
这是原始数据库示例:
病人 | 日期 | 手术 | id |
---|---|---|---|
A | 01-01-22 | 眼睛 | 1 |
B | 01-01-22 | 嘴 | 2 |
C | 01-01-22 | 鼻子 | 3 |
A | 01-05-22 | 嘴 | 4 |
C | 01-06-22 | 眼睛 | 5 |
B | 01-07-22 | 嘴 | 6 |
A | 01-12-22 | 鼻子 | 7 |
我需要以下输出:
病人 | 手术次数 | 第一次手术 | 最后一次手术 |
---|---|---|---|
A | 3 | 眼睛 | 鼻子 |
B | 2 | 嘴 | 嘴 |
C | 2 | 鼻子 | 眼睛 |
我正在使用以下 Dax 表达式:
N_Surgery = GROUPBY(Surgery, Surgery[patient_id],
"N_Surgery", COUNTX(CURRENTGROUP(), Surgery[id]))
但我不知道如何进行最后一次和第一次手术。
这就是我希望使用 R 代码示例来复制的内容:
Summarise <- DF%>%
group_by(patient_id)%>%
summarise(N_Surgery = n(),
First = surgery[which.min(date)],
Last = surgery[which.max(date)])
提前致谢!
表:
代码:
Table 2 =
ADDCOLUMNS(
SUMMARIZE('Table', 'Table'[patient]),
"Number of Surgeries", CALCULATE(COUNTROWS('Table')),
"First Surgery",
VAR a = CALCULATE(MIN('Table'[date]))
RETURN CALCULATE(MIN('Table'[surgery]), 'Table'[date] = a),
"Last Surgery",
VAR b = CALCULATE(MAX('Table'[date]))
RETURN CALCULATE(MIN('Table'[surgery]), 'Table'[date] = b)
)
你也可以尝试这3招-
surgery_count = count('your_table_name'[patient])
surgery_first =
var current_patient_min_date =
CALCULATE(
MIN('your_table_name'[date]),
ALLEXCEPT('your_table_name','your_table_name'[patient])
)
RETURN
CALCULATE(
MIN('your_table_name'[surgery]),
FILTER(
ALLEXCEPT('your_table_name','your_table_name'[patient]),
'your_table_name'[date] = current_patient_min_date
)
)
surgery_last =
var current_patient_max_date =
CALCULATE(
MAX('your_table_name'[date]),
ALLEXCEPT('your_table_name','your_table_name'[patient])
)
RETURN
CALCULATE(
MIN('your_table_name'[surgery]),
FILTER(
ALLEXCEPT('your_table_name','your_table_name'[patient]),
'your_table_name'[date] = current_patient_max_date
)
)
输出-