计算总观察天数,单位为R(lubridate+;dplyr)

计算总观察天数,单位为R(lubridate+;dplyr),r,dplyr,lubridate,R,Dplyr,Lubridate,我正在使用一个数据集,其中每一行都包含一个单独的个体(ID)观察值。我希望R查找第一个和最后一个观察日期,并计算“活动日”的总数,将这些值放入新列中。当我运行下面的代码时,我会得到一列,每个条目都有相同的数字——整个数据集最早和最晚之间的总天数,而不是每个人 我用的是dplyr和lubridate。我使用此页面()提供代码帮助,但它对我不起作用 有人能帮我找出哪里出了问题吗 data$date <- mdy(data$date) data <- data %>% gro

我正在使用一个数据集,其中每一行都包含一个单独的个体(ID)观察值。我希望R查找第一个和最后一个观察日期,并计算“活动日”的总数,将这些值放入新列中。当我运行下面的代码时,我会得到一列,每个条目都有相同的数字——整个数据集最早和最晚之间的总天数,而不是每个人

我用的是dplyr和lubridate。我使用此页面()提供代码帮助,但它对我不起作用

有人能帮我找出哪里出了问题吗

data$date <- mdy(data$date)

data <- data %>% 
  group_by(ID) %>% 
  mutate(total.activity.days = max((date)) - min((date)))

   cage   date              ID   total.activity.days
1   1     2018-04-30        40   54
2   1     2018-04-30        76   54 
3   1     2018-05-02        40   54 
4   1     2018-05-02        76   54
5   1     2018-05-04        40   54
6   1     2018-05-04        76   54
7   1     2018-04-28        59   54
8   1     2018-04-29        59   54
data$date%
变异(total.activity.days=max((日期))-min((日期)))
cage日期ID总计.activity.days
1   1     2018-04-30        40   54
2   1     2018-04-30        76   54 
3   1     2018-05-02        40   54 
4   1     2018-05-02        76   54
5   1     2018-05-04        40   54
6   1     2018-05-04        76   54
7   1     2018-04-28        59   54
8   1     2018-04-29        59   54
试试这个:

data_new <- data %>% 
    group_by(ID) %>% 
    summarise(MaxDate = max(date),
              MinDate = min(date)) %>% 
    mutate(total.activity.days = MaxDate - MinDate) %>% 
    select(ID, total.activity.days)
数据\u新建%
分组依据(ID)%>%
总结(最大日期=最大日期),
MinDate=min(日期))%>%
突变(total.activity.days=MaxDate-MinDate)%>%
选择(ID、总计.活动.天数)

所需的只是:

df %>% group_by(ID) %>% mutate(total.activity.days = max(date) - min(date) )
其中:

cage    date          ID total.activity.days
  <int> <date>     <int> <time>             
1     1 2018-04-30    40 4                  
2     1 2018-04-30    76 4                  
3     1 2018-05-02    40 4                  
4     1 2018-05-02    76 4                  
5     1 2018-05-04    40 4                  
6     1 2018-05-04    76 4                  
7     1 2018-04-28    59 1                  
8     1 2018-04-29    59 1 
cage date ID total.activity.days
1     1 2018-04-30    40 4                  
2     1 2018-04-30    76 4                  
3     1 2018-05-02    40 4                  
4     1 2018-05-02    76 4                  
5     1 2018-05-04    40 4                  
6     1 2018-05-04    76 4                  
7     1 2018-04-28    59 1                  
8     1 2018-04-29    59 1 

你说得对!我没注意到。我再次运行代码并修复了该项,但同样的问题仍然存在。新列中的数字对于每一行都是相同的。不需要
data$date,这应该有效!但出于某种原因,在我的电脑上,“total.activity.days”列中的每一行我都得到“6”。str(数据)产生了什么?我只是重新安装了每个包,然后重新加载数据,突然它开始工作了!谢谢你的帮助!