折叠行并保留 highest/lowest 个日期
Collapse rows and keep highest/lowest dates
我想折叠包含入院日期、出院日期和住院原因的多行。
但我只想保留按ID和停留原因分组的最早入院日期和最晚出院日期。
我的数据框如下所示:
结构(列表(入学日期=结构(c(16709, 16710, 16713,
16714, 16715, 16729, 16730, 16731, 16735, 16741, 16742, 16787,
16790, 16792, 16797, 16798, 16799), class = "日期"), 放电日期 = 结构(c(16709,
16710, 16713, 16714, 16715, 16729, 16730, 16731, 16735, 16741,
16742, 16787, 16790, 16792, 16797, 16798, 16799), class = "日期"),
ID = c(1010091262, 1010091262, 1010091262, 1010091262, 1010091262,
1010091262, 1010091262, 1010091262, 1010091262, 1010091262,
1010091262, 1640300380, 1640300380, 1640300380, 1640300380,
1640300380, 1640300380), CauseOfStay = c("Folge: Hirninfarkt",
"Folge: Hirninfarkt", "Folge: Hirninfarkt", "Folge: Hirninfarkt",
"Folge: Hirninfarkt", "Schädigung: Hirn, anoxisch, aonkl",
"Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl",
"Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl",
"Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl",
"Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl",
"Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl",
"Schädigung: Hirn, anoxisch, aonkl")), row.names = c(1L,
2L, 3L, 4L, 5L, 15L, 16L, 17L, 18L, 19L, 20L, 60L, 61L, 62L,
63L, 64L, 65L), class = "data.frame")
输出应包含 3 行,按停留原因和 ID 分组的最早入院日期、最晚出院日期。
您可以使用 group_by / summarize.. 您可以将您的患者标识符 (ID
) 添加到 group_by()
子句以允许不同的患者有不同的汇总行,对于相同的逗留原因
dat %>%
group_by(ID, CauseOfStay) %>%
summarize(AdmissionDate = min(AdmissionDate, na.rm=T),
DischargeDate = max(DischargeDate, na.rm=T))
输出:
ID CauseOfStay AdmissionDate DischargeDate
<dbl> <chr> <date> <date>
1 1010091262 Folge: Hirninfarkt 2015-10-01 2015-10-07
2 1010091262 Schädigung: Hirn, anoxisch, aonkl 2015-10-21 2015-11-03
3 1640300380 Schädigung: Hirn, anoxisch, aonkl 2015-12-18 2015-12-30
我想折叠包含入院日期、出院日期和住院原因的多行。 但我只想保留按ID和停留原因分组的最早入院日期和最晚出院日期。
我的数据框如下所示:
结构(列表(入学日期=结构(c(16709, 16710, 16713, 16714, 16715, 16729, 16730, 16731, 16735, 16741, 16742, 16787, 16790, 16792, 16797, 16798, 16799), class = "日期"), 放电日期 = 结构(c(16709, 16710, 16713, 16714, 16715, 16729, 16730, 16731, 16735, 16741, 16742, 16787, 16790, 16792, 16797, 16798, 16799), class = "日期"), ID = c(1010091262, 1010091262, 1010091262, 1010091262, 1010091262, 1010091262, 1010091262, 1010091262, 1010091262, 1010091262, 1010091262, 1640300380, 1640300380, 1640300380, 1640300380, 1640300380, 1640300380), CauseOfStay = c("Folge: Hirninfarkt", "Folge: Hirninfarkt", "Folge: Hirninfarkt", "Folge: Hirninfarkt", "Folge: Hirninfarkt", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl", "Schädigung: Hirn, anoxisch, aonkl")), row.names = c(1L, 2L, 3L, 4L, 5L, 15L, 16L, 17L, 18L, 19L, 20L, 60L, 61L, 62L, 63L, 64L, 65L), class = "data.frame")
输出应包含 3 行,按停留原因和 ID 分组的最早入院日期、最晚出院日期。
您可以使用 group_by / summarize.. 您可以将您的患者标识符 (ID
) 添加到 group_by()
子句以允许不同的患者有不同的汇总行,对于相同的逗留原因
dat %>%
group_by(ID, CauseOfStay) %>%
summarize(AdmissionDate = min(AdmissionDate, na.rm=T),
DischargeDate = max(DischargeDate, na.rm=T))
输出:
ID CauseOfStay AdmissionDate DischargeDate
<dbl> <chr> <date> <date>
1 1010091262 Folge: Hirninfarkt 2015-10-01 2015-10-07
2 1010091262 Schädigung: Hirn, anoxisch, aonkl 2015-10-21 2015-11-03
3 1640300380 Schädigung: Hirn, anoxisch, aonkl 2015-12-18 2015-12-30