日期重叠时将药物分组在一起

问题描述 投票:0回答:2

这解释起来有点棘手,所以请耐心听我说,如果我没有说清楚,请提问。

这是我的数据

mydata <- data.frame(id = c(1,1,1,1,1,1,1,1),
                    drug = c("let", "per", "pac", "tra","chem", "tem", "cap", "nem"),
                    type = c("type1", "type2", "type1","type1","type1", "type2", "type1", "type2"), 
                    startdate = c("2016-05-12","2016-05-30","2016-05-31","2016-05-31",  "2018-01-18","2018-04-01", "2020-11-05","2020-11-04"),   
                    enddate =c("2016-05-12", "2018-04-05","2017-11-08", "2018-04-05", "2018-01-18", "2020-11-06", "2021-08-18", "2021-08-11"))

我的目标是将日期相互重叠的药物分组。但即使两种药物之间的日期有重叠,但药物类型切换为 type2,我希望它能够触发另一行,并具有自己的开始日期和结束日期。

我能够使用以下代码实现彼此重叠的分组日期

mydata <-  mydata %>%
  arrange(id, startdate,drug) %>% 
  group_by(id) %>%
  mutate(indx = c(0, cumsum(as.numeric(lead(startdate)) >
                              cummax(as.numeric(enddate)))[-n()])) %>%
  group_by(id, indx) %>%
  mutate(drugs = paste0(drug, collapse = ", "))%>%
  summarise(startDate = min(startdate), endDate = max(enddate), drugs=drugs) %>% distinct()

但是正如你在药物“让”之后看到的那样;所有其他行都分组在一起。相反,我想要一个新行来表示“tem”和“nem”,因为它们是 2 类药物。

这是我希望得到的输出


mydata1 <- data.frame(id = c(1,1,1,1),
                     drugs = c("let", "per,pac,tra,chem", "tem", "cap, nem"),
                    startdate = c("2016-05-12","2016-05-30","2018-04-01","2020-11-04"),   
                    enddate =c("2016-05-12","2018-01-18", "2020-11-06","2021-08-11"))

如有任何帮助,我们将不胜感激!

r data-manipulation overlapping
2个回答
0
投票

我将每种药物的数据帧拆分为单独的数据帧,然后使用您现有的代码。然后我将两个新数据帧重新组合到一个数据帧中。

我还通过日期转换获得了 NA,因此我使用 lubridate 转换了日期。


#change dates to the Date format
require(lubridate)

mydata$startdate <- as.Date(mydata$startdate)
mydata$enddate <- as.Date(mydata$enddate)


# create two seperate dataframes, one for each drug type
type1 <- mydata %>%
  filter(type == "type1")


type2 <- mydata %>%
  filter(type == "type2")


#use your code on both the dataframes

type1_grouped <-type1 %>%
  arrange(id, startdate,drug) %>% 
  group_by(id) %>%
  mutate(indx = c(0, cumsum(as.numeric(lead(startdate)) > cummax(as.numeric(enddate)))[-n()])) %>%
  group_by(id, indx) %>%
  mutate(drugs = paste0(drug, collapse = ", "))%>%
  summarise(startDate = min(startdate), endDate = max(enddate), drugs=drugs) %>%
  distinct()

type2_grouped <- type2 %>%
  arrange(id, startdate,drug) %>% 
  group_by(id) %>%
  mutate(indx = c(0, cumsum(as.numeric(lead(startdate)) > cummax(as.numeric(enddate)))[-n()])) %>%
  group_by(id, indx) %>%
  mutate(drugs = paste0(drug, collapse = ", "))%>%
  summarise(startDate = min(startdate), endDate = max(enddate), drugs=drugs) %>%
  distinct()
 
 
 

 
# put the two dataframes back together
mydata2 <- rbind(type1_grouped,type2_grouped)
 

# Change the format to match mydata1
mydata2 %>% relocate(drugs, .before=startDate) %>% ungroup() %>% select(-indx)



0
投票

我希望你们一切都好。我想分享一些关于慢性疼痛管理的见解,特别是与使用曲马多作为潜在治疗选择相关的见解。作为与疼痛管理解决方案密切合作的人,我看到很多人考虑使用不同的药物来缓解中度至重度疼痛。

以下是您需要了解的关于曲马多的信息:

工作原理:曲马多是一种阿片类镇痛药,这意味着它作用于神经系统,减少向大脑发出的疼痛信号。它通常用于治疗关节炎、背痛或手术后疼痛等病症。

何时使用:当其他止痛方法(如非处方药)不足以缓解疼痛时,医生通常会推荐曲马多。然而,重要的是仅在医疗保健专业人员处方的情况下使用这种药物,因为滥用可能会导致依赖性。

需要注意的副作用:虽然曲马多有效,但它也会引起副作用,如恶心、头晕、便秘,在极少数情况下,还会引起更严重的反应。在开始任何新药物治疗之前,最好与您的医生讨论潜在风险。

在线购买曲马多安全吗?:如果您正在考虑在线购买曲马多,确保您使用的是有执照且信誉良好的药房至关重要。请谨慎对待提供无处方药物的网站,因为它们可能不值得信赖。值得考虑的一个选择是 HealthTimers.com,您可以凭有效处方安全地在线购买曲马多。

你们有人用过曲马多吗?它对您的疼痛管理有何作用? 欢迎分享您的经验或提出任何问题!

期待大家的来信! https://healthtimers.com/product-category/buy-tramadol-online/

© www.soinside.com 2019 - 2024. All rights reserved.