我正在使用一个数据集,其中每一行包含一个单独的个体(ID)观察值。我希望R查找第一个和最后一个观察日期,并计算“活动天数”的总数,并将这些值放在新列中。当我运行下面的代码时,我将获得一列,每个条目都使用相同的编号-整个数据集最早到最近几天之间的总天数,而不是每个人的总天数。
我正在使用dplyr和lubridate。我使用此页面(difference between the first date and last date within same individual in R)来提供代码帮助,但它对我不起作用。
有人可以帮我弄清楚我要去哪里哪里吗?
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
答案 0 :(得分:1)
尝试一下:
data_new <- data %>%
group_by(ID) %>%
summarise(MaxDate = max(date),
MinDate = min(date)) %>%
mutate(total.activity.days = MaxDate - MinDate) %>%
select(ID, total.activity.days)
答案 1 :(得分:1)
所有需要的是:
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