【发布时间】:2014-01-16 16:42:16
【问题描述】:
我有一张虚构的医院数据表,需要将出院日期替换为(不存在的)人员进行医院转院时的最终出院日期。
rows <- sort(c(which(data$TRANSFER_NUM != 0), which(data$TRANSFER_NUM == 1)-1))
subset <- data[rows,]
令人讨厌的是,有些人可以为不同的事件进行多次转移,即
ID DISCHARGE_DATE FILE_SEQUENCE TRANSFER_NUM 1992-12-04 3360 0 1993-02-11 3361 1 1993-03-10 3362 2 1993-11-25 3363 3 乙 1987-05-15 3419 0 乙 1987-05-19 3420 1 B 1990-02-03 3473 0 B 1990-02-05 3474 1这意味着
ddply(subset, "ID", mutate, max=max(DISCHARGE_DATE))
会给 B 带来错误的结果,而正确的结果应该是:
ID DISCHARGE_DATE FILE_SEQUENCE TRANSFER_NUM NEW_DISCHARGE_DATE 1992-12-04 3360 0 1993-11-25 1993-02-11 3361 1 1993-11-25 1993-03-10 3362 2 1993-11-25 1993-11-25 3363 3 1993-11-25 B 1987-05-15 3419 0 1987-05-19 B 1987-05-19 3420 1 1987-05-19 B 1990-02-03 3473 0 1990-02-05 B 1990-02-05 3474 1 1990-02-05我想一些额外的分组可能会有所帮助,也许是这样的:
ID DISCHARGE_DATE FILE_SEQUENCE TRANSFER_NUM GROUP NEW_DISCHARGE_DATE A 1992-12-04 3360 0 1 1993-11-25 1993-02-11 3361 1 1 1993-11-25 1993-03-10 3362 2 1 1993-11-25 A 1993-11-25 3363 3 1 1993-11-25 B 1987-05-15 3419 0 1 1987-05-19 B 1987-05-19 3420 1 1 1987-05-19 B 1990-02-03 3473 0 2 1990-02-05 B 1990-02-05 3474 1 2 1990-02-05任何帮助将不胜感激!
【问题讨论】:
-
温馨提示:
data和subset是常用的R命令。您可能会考虑不将它们用作对象名称。