假设我有d
个:
> d
pnr age.hl age.hl.time kon.hl kon.hl.time sen.hl sen.hl.time mix.hl mix.hl.time
1 A 0 2018-12-31 1 2011-02-01 0 2018-12-31 0 2018-12-31
2 A 1 2013-10-31 0 2018-12-31 0 2018-12-31 1 2013-10-31
3 A 0 2018-12-31 0 2018-12-31 1 2016-09-30 0 2018-12-31
4 B 0 2018-12-31 0 2018-12-31 1 2004-04-30 0 2018-12-31
5 C 0 2018-12-31 0 2018-12-31 0 2018-12-31 1 2006-01-17
6 C 1 2008-07-31 0 2018-12-31 1 2009-01-31 0 2018-12-31
d$pnr
是唯一的患者标识符.age.hl
、kon.hl
、sen.hl
和mix.hl
表示不同的疾病及其对应的时间变量.如果发生0事件,所有患者的审查频率为2018-12-31
.
如果在任何一列中出现1,则它不能再次出现在same列中.
我需要合并行,所以d$pnr
只出现一次.即,每列的事件数据/信息应合并到同一行.
我希望在dplyr
年内找到解决方案.
Expected output:
pnr age.hl age.hl.time kon.hl kon.hl.time sen.hl sen.hl.time mix.hl mix.hl.time
1 A 1 2013-10-31 1 2011-02-01 1 2016-09-30 1 2013-10-31
2 B 0 2018-12-31 0 2018-12-31 1 2004-04-30 0 2018-12-31
3 C 1 2008-07-31 0 2018-12-31 1 2009-01-31 1 2006-01-17
Data个
d <- data.frame(
pnr = c("A", "A", "A", "B", "C", "C"),
age.hl = c(0, 1, 0, 0, 0, 1),
age.hl.time = c(as.Date("2018-12-31"), as.Date("2013-10-31"), as.Date("2018-12-31"),
as.Date("2018-12-31"), as.Date("2018-12-31"), as.Date("2008-07-31")),
kon.hl = c(1, 0, 0, 0, 0, 0),
kon.hl.time = c(as.Date("2011-02-01"), as.Date("2018-12-31"), as.Date("2018-12-31"),
as.Date("2018-12-31"), as.Date("2018-12-31"), as.Date("2018-12-31")),
sen.hl = c(0, 0, 1, 1, 0, 1),
sen.hl.time = c(as.Date("2018-12-31"), as.Date("2018-12-31"), as.Date("2016-09-30"),
as.Date("2004-04-30"), as.Date("2018-12-31"), as.Date("2009-01-31")),
mix.hl = c(0, 1, 0, 0, 1, 0),
mix.hl.time = c(as.Date("2018-12-31"), as.Date("2013-10-31"), as.Date("2018-12-31"),
as.Date("2018-12-31"), as.Date("2006-01-17"), as.Date("2018-12-31"))
)