【问题标题】:Calculating days since and days until next event计算自下一个事件以来的天数和距离下一个事件的天数
【发布时间】:2018-09-17 18:20:27
【问题描述】:

几个月前我编写了一些代码来查找距下次就诊的天数和距上次就诊的天数,以跟踪患者的进展并确定错过的约会。这段代码运行良好,并且给出了正确的天数(我手动验证了一个样本),但现在它不起作用。似乎“Group_by()”命令被忽略了,它只是计算观察之间的天数,因为它们在 R 中排序,而不是在每个分组的开头和结尾给出“NA”。我想我只是很困惑为什么这是有效的,但后来停止了。

代码:

    dd5 <- dd5 %>% 
  arrange(PatientID, GroupingUid, VisitDate) %>%
  group_by(GroupingUid) %>%
  mutate(Days.Until.Next.Visit = as.numeric(lead(VisitDate) - VisitDate))


dd5 <- dd5 %>% 
  arrange(PatientID, GroupingUid, VisitDate) %>%
  group_by(GroupingUid) %>%
  mutate(Days.Since.Last.Visit = as.numeric(VisitDate - lag(VisitDate)))

更新:我尝试取消分组,然后排列和重新组合,我尝试分组然后排列,我已经删除了 as.numeric() 但没有任何成功。

GroupingUID 和 PatientUID 是我用来跟踪每个患者/伤害的唯一标识符。 GroupingUID 和 PatientID 的每个组合都应分别计算天数。 VisitDate 显然是日期。

83515888-E9C2-4B71-87EB-E954182DED88    1   8/22/2017   38  5
86169252-F2CD-4EDF-843F-6946AD45376A    1   9/29/2017   -56 38
B8498C0E-CF25-4F05-A7AC-DFECE1252183    1   8/4/2017    25  -56
BEABCA88-E3EB-4D48-B52B-D5639C527141    1   8/29/2017   2   25
DE7493C0-F72C-44D8-8469-9AA30662769D    1   8/31/2017   -2  2
EE720E94-9B1F-4350-A1B5-87E71BF40E35    1   8/29/2017   -32 -2
3970FF5F-4FEB-4509-A94E-0678000C505A    10  7/28/2017   0   -32
461BC1C4-F07C-4F42-BD8E-7545644FF4BA    10  7/28/2017   54  0
0656001E-2289-4B5D-B49A-CB6F57BD8E89    100 5/8/2018    7   13
0656001E-2289-4B5D-B49A-CB6F57BD8E89    100 5/15/2018   7   7
0656001E-2289-4B5D-B49A-CB6F57BD8E89    100 5/22/2018   -33 7
0286CDBF-1F52-4074-94B6-AE541E0DC9BF    10006   4/19/2018   6   -33
0286CDBF-1F52-4074-94B6-AE541E0DC9BF    10006   4/25/2018   8   6
0286CDBF-1F52-4074-94B6-AE541E0DC9BF    10006   7/12/2018   4   7
0286CDBF-1F52-4074-94B6-AE541E0DC9BF    10006   7/16/2018   -88 4
04A80019-561F-4CD4-B2D5-CAE059051750    10006   4/19/2018   6   -88
04A80019-561F-4CD4-B2D5-CAE059051750    10006   4/25/2018   8   6
F75FC4A1-587A-414E-BA35-9E5A6948F3FC    10006   6/28/2018   7   7
F75FC4A1-587A-414E-BA35-9E5A6948F3FC    10006   7/5/2018    7   7
F75FC4A1-587A-414E-BA35-9E5A6948F3FC    10006   7/12/2018   -300    7
09772AD1-2096-4C56-83AB-08CF9876ADDC    102 9/15/2017   7   -300
87C3C708-64F6-4321-9D98-F258B04B7E39    102 10/27/2017  7   7
87C3C708-64F6-4321-9D98-F258B04B7E39    102 11/3/2017   -49 7
BE2EFB0A-A1D8-49E6-88CF-D9818D1EF60D    102 9/15/2017   7   -49
BE2EFB0A-A1D8-49E6-88CF-D9818D1EF60D    102 9/22/2017   7   7
BE2EFB0A-A1D8-49E6-88CF-D9818D1EF60D    102 9/29/2017   14  7
BE2EFB0A-A1D8-49E6-88CF-D9818D1EF60D    102 10/13/2017  7   14
BE2EFB0A-A1D8-49E6-88CF-D9818D1EF60D    102 10/20/2017  7   7
BE2EFB0A-A1D8-49E6-88CF-D9818D1EF60D    102 10/27/2017  7   7
BE2EFB0A-A1D8-49E6-88CF-D9818D1EF60D    102 11/3/2017   -37 7
0B8DAD9F-2141-42A4-BBC8-F026DA4CB24A    103 9/27/2017   0   -37
440B3D2F-7E4E-42AE-9274-CCF751A10A94    103 9/27/2017   0   0
70112B85-7396-4A72-8853-B308D061383C    103 9/27/2017   0   0
889AB652-42C6-409F-A389-1CA96E66997B    103 9/27/2017   0   0
AAD6D986-80FE-4143-8ABF-BCADE73AB2EA    103 9/27/2017   0   0
C03778F8-1499-4FB0-99CC-D3A3B1143E4F    103 9/27/2017   0   0
C7E21544-96F4-46CB-87F5-11D882352FE0    103 9/27/2017   0   0
DD401067-3FCA-4828-8765-635E82181D1E    103 9/27/2017   0   0
F873284F-B86E-47CA-BA68-3AD4650CD72F    103 9/27/2017   -6  0
0B1CC77A-BADC-4971-AB14-7A5FB982DC4C    104 9/21/2017   7   -6
0B1CC77A-BADC-4971-AB14-7A5FB982DC4C    104 9/28/2017   14  7
0B1CC77A-BADC-4971-AB14-7A5FB982DC4C    104 10/12/2017  0   14
352F0DFE-C06F-46CC-AFE5-F6B8929FB31B    104 10/12/2017  -14 0

【问题讨论】:

  • 您的VisitDate 列未正确排序。然而,考虑到数据的当前顺序,计算似乎工作正常。在group_by之后你可能需要arrange
  • 或者在arrange 之前将ungroup 作为您的第一条语句。 group_by 不会重新排序您的数据,但您可能已经对 dd5 进行了分组,导致 arrange 调用提供了意外的结果。
  • 我已经尝试了你的两种解决方案,但它们都没有提供任何改进,谢谢@Mako212

标签: r group-by dplyr lead


【解决方案1】:

在我的原始代码中,我使用以下包来完成几件事:

library(stringi)
library(stringr)
library(lubridate)
library(plyr)
library(dplyr)
library(tidyverse)
library(viridis). 

似乎 tidyverse 正在抑制 dpylr 的 mutate 函数。删除所有包,然后在计算似乎解决了问题后调用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2021-01-03
    • 2019-08-16
    相关资源
    最近更新 更多