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