【问题标题】:select the next non-identical date in data frame在数据框中选择下一个不相同的日期
【发布时间】:2018-09-19 13:42:51
【问题描述】:

我想生成药物的结束日期,其中结束日期定义为药物未注册的第一个日期。 我有以下三种药物可以开处方 a、b、c 以及它们的注册日期

Drug <- c("a","b","a","b","c","a","c","a","c","c")

Date <- c("2018-09-20","2018-09-20" , "2018-09-21","2018-09-21","2018-09-21",
     "2018-09-22" ,"2018-09-22" ,"2018-09-23","2018-09-23",
     "2018-09-24")
Dates <- cbind(Drug,Date)


     Drug    Date         
[1,] "a"  "2018-09-20"
[2,] "b"  "2018-09-20"
[3,] "a"  "2018-09-21"
[4,] "b"  "2018-09-21"
[5,] "c"  "2018-09-21"
[6,] "a"  "2018-09-22"
[7,] "c"  "2018-09-22"
[8,] "a"  "2018-09-23"
[9,] "c"  "2018-09-23"
[10,] "c"  "2018-09-24"

我希望我的决赛桌看起来像这样:

end <- c("2018-09-24","2018-09-22" ,"2018-09-24","2018-09-22" ,NA,"2018-09-24",
          NA,"2018-09-24",NA,NA)

Dates <- cbind(Dates,end)


Drug      res          end         
 "a"  "2018-09-20"  "2018-09-24"
 "b"  "2018-09-20"  "2018-09-22"
 "a"  "2018-09-21"  "2018-09-24"
 "b"  "2018-09-21"  "2018-09-22"
 "c"  "2018-09-21"  NA          
 "a"  "2018-09-22"  "2018-09-24"
 "c"  "2018-09-22"  NA          
 "a"  "2018-09-23"  "2018-09-24"
 "c"  "2018-09-23"  NA          
 "c" "2018-09-24"   NA 

【问题讨论】:

  • 您好@Question_poster - 您应该使用相关的语言/框架/软件来标记您的问题。此外,可能有超过 1 个是相关的。
  • 道歉。感谢您指出。我做了更改。

标签: r date next


【解决方案1】:

首先,我会将您的数据集转换为数据框,以便更轻松地进行多项操作。我会制作一个“帮助”数据框来存储每种药物的唯一结束日期,然后将这些日期加入您的原始数据集。

在此过程中,我还会创建一个小实用函数来查找给定日期之后的日期。 (根据您想要的解决方案中 NA 的出现,我假设当您说“未注册药物的第一个日期”时,您的意思是 您的日期列表中的第一个日期,而不仅仅是下一个日历日。)

library(dplyr)

Dates = as.data.frame(Dates, stringsAsFactors = FALSE)

next_date <- function(one_date, all_dates) {
    all_dates <- sort(unique(all_dates))
    return(all_dates[which(one_date == all_dates)[[1]] + 1])
}

end_dates <- group_by(Dates, Drug)
end_dates <- summarize(end_dates, end = next_date(max(Date), Dates$Date))

Dates = left_join(Dates, end_dates)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2021-04-05
    • 2021-01-04
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多