数据集的大小写为行。每个案例都有一天进行,还有一个手术室。它还有一个开始和结束时间。如果特定手术室中的病例在一天之内,我需要创建一个新变量来存储订单信息。 (即这是当天的第一个案例,也是最后一个案例)。我需要将此信息保存在数据集中的新变量中。
变量包括:CASE_ID
,DATE
,OPER_IN_TIME
,OPER_OUT_TIME
,OPER_ROOM
OPER_IN_TIME
和OPER_OUT_TIME
存储为POSIXct
DATE
是date
变量(格式= %Y-%m-%d
)
OPER_ROOM
是integer
。
我已经发现我可以使用dplyr
命令在一个手术室中一天内获得病例的顺序:
dataset %>%
filter(DATE == "2014-01-02", OPER_ROOM == "20") %>%
arrange(OPER_IN_TIME) %>%
mutate(ORDER = row_number())
如何构建嵌套循环以存储每个案例的此信息?我还需要了解当天的最后一个案例,并将信息存储在案例中。
编辑:dput()
structure(list(ID = 1:7, OPER_ROOM = c(13L, 12L, 13L, 12L, 13L,
12L, 13L), OPER_IN_TIME = structure(c(1388644200, 1388643300,
1388653200, 1388649600, 1388662200, 1388730600, 1388729400), class = c("POSIXct",
"POSIXt"), tzone = ""), OPER_OUT_TIME = structure(c(1388650800,
1388647200, 1388658600, 1388658300, 1388665800, 1388737800, 1388745000
), class = c("POSIXct", "POSIXt"), tzone = ""), DATE = structure(c(16072,
16072, 16072, 16072, 16072, 16073, 16073), class = "Date")), .Names = c("ID",
"OPER_ROOM", "OPER_IN_TIME", "OPER_OUT_TIME", "DATE"), row.names = c(NA,
-7L), class = "data.frame")
头()
ID OPER_ROOM OPER_IN_TIME OPER_OUT_TIME DATE
1 1 13 2014-01-02 08:30:00 2014-01-02 10:20:00 2014-01-02
2 2 12 2014-01-02 08:15:00 2014-01-02 09:20:00 2014-01-02
3 3 13 2014-01-02 11:00:00 2014-01-02 12:30:00 2014-01-02
4 4 12 2014-01-02 10:00:00 2014-01-02 12:25:00 2014-01-02
5 5 13 2014-01-02 13:30:00 2014-01-02 14:30:00 2014-01-02
6 6 12 2014-01-03 08:30:00 2014-01-03 10:30:00 2014-01-03
答案 0 :(得分:0)
以下是使用data.table
包的解决方案:
library(data.table)
dt <- data.table(CASE_ID=1:10,
DATE=rep(as.Date("2015-01-01")+0:1, 5),
OPER_IN_TIME=1:10,
OPER_OUT_TIME=11:20,
OPER_ROOM=rep(c(1,2),5))
dt[, ORDER := order(-OPER_OUT_TIME), by=list(DATE, OPER_ROOM) ]
dt[, LAST := ifelse(ORDER==max(ORDER), T, F), by=list(DATE, OPER_ROOM)]
只需更换In&amp;超出实际可排序时间戳的时间......