【发布时间】:2018-05-04 22:23:15
【问题描述】:
下面显示了我的数据的三个主要列(squirrel_id = 唯一的个人 ID,byear = 出生年份,dyear = 死亡年份):
> summary(complete)
squirrel_id byear dyear
Min. : 416 Min. :1989 Min. :1989
1st Qu.: 4152 1st Qu.:1997 1st Qu.:1998
Median : 7870 Median :2003 Median :2004
Mean :10419 Mean :2004 Mean :2004
3rd Qu.:16126 3rd Qu.:2011 3rd Qu.:2012
Max. :23327 Max. :2017 Max. :2017
我正在尝试将第二条数据(如下所示)合并到上述数据集中。
mast.yr<-c("1993", "1998", "2005", "2010", "2014")
我正在尝试做两件事:
- 添加一列,说明个人 (
squirrel_id) 在任何mast.yr年期间是否还活着(dyear-byear= 活着的年限(包括byear和dyear)。 - 添加另一列,计算每个人 (
squirrel_id) 在一生中经历的mast.yr年数 (dyear-byear= 生存年数范围(包括byear和dyear)。李>
为了生成第一列,我一直在使用 dplyr 包中的 mutate 函数,但我只能让它分别为 byear 和 dyear 工作,如下所示:
complete <- complete %>%
mutate (mast = ifelse (byear %in% c("1993", "1998", "2005", "2010", "2014"), 1, 0),
mast = ifelse (dyear %in% c("1993", "1998", "2005", "2010", "2014"), 1, 0)))
但它并没有给出所需的输出,因为它是单独考虑byear 和dyear,而不是作为一个连续的时间段。我已经尝试了here 和here 发布的解决方案,但没有运气。
任何建议将不胜感激!
可以在here 找到我的数据副本。为了将来的重现性,这里有一个示例:
> head(DF)
> squirrel_id byear dyear
<dbl> <int> <dbl>
6715 2006 2006
22274 2016 2017
20445 2014 2017
19528 2013 2013
2674 1995 1995
1419 1992 1993
【问题讨论】:
-
尝试使用
lubridate包。在此处查看间隔部分:r4ds.had.co.nz/dates-and-times.html
标签: r if-statement dplyr date-range