r-如何计算每个人从初始日期起的月数



这是我的数据集的表示

ID<-c(rep(1,10),rep(2,8))
year<-c(2007,2007,2007,2008,2008,2009,2010,2009,2010,2011,
2008,2008,2009,2010,2009,2010,2011,2011)
month<-c(2,7,12,4,11,6,11,1,9,4,3,6,7,4,9,11,2,8)
mydata<-data.frame(ID,year,month)

我想为每个人计算从最初日期起的月数。我使用了两个变量:年份和月份。

我第一次订购年份和月份:

mydata2<-mydata%>%group_by(ID,year)%>%arrange(year,month,.by_group=T) 

然后我创建了变量date,考虑到当天以01:开始

mydata2$date<-paste("01",mydata2$month,mydata2$year,sep = "-")

然后我使用lubridate将这个变量更改为日期格式

mydata2$date<-dmy(mydata2$date)

但在这之后,我真的不知道该怎么办,为了有这样一个数据集(最好使用dplyr代码(如下:

ID year month       date dif_from_init
1   1 2007     2  01-2-2007             0
2   1 2007     7  01-7-2007             5
3   1 2007    12 01-12-2007            10
4   1 2008     4  01-4-2008            14
5   1 2008    11 01-11-2008            21
6   1 2009     1  01-1-2009            23
7   1 2009     6  01-6-2009            28
8   1 2010     9  01-9-2010            43
9   1 2010    11 01-11-2010            45
10  1 2011     4  01-4-2011            50
11  2 2008     3  01-3-2008             0
12  2 2008     6  01-6-2008             3
13  2 2009     7  01-7-2009            16
14  2 2009     9  01-9-2009            18
15  2 2010     4  01-4-2010            25
16  2 2010    11 01-11-2010            32
17  2 2011     2  01-2-2011            35
18  2 2011     8  01-8-2011            41

一种方法可以是:

mydata %>%
group_by(ID) %>%
mutate(date = as.Date(sprintf('%d-%d-01',year, month)), 
diff = as.numeric(round((date - date[1])/365*12)))
# A tibble: 18 x 5
# Groups:   ID [2]
ID  year month date        diff
<dbl> <dbl> <dbl> <date>     <dbl>
1     1  2007     2 2007-02-01     0
2     1  2007     7 2007-07-01     5
3     1  2007    12 2007-12-01    10
4     1  2008     4 2008-04-01    14
5     1  2008    11 2008-11-01    21
6     1  2009     6 2009-06-01    28
7     1  2010    11 2010-11-01    45
8     1  2009     1 2009-01-01    23
9     1  2010     9 2010-09-01    43
10     1  2011     4 2011-04-01    50
11     2  2008     3 2008-03-01     0
12     2  2008     6 2008-06-01     3
13     2  2009     7 2009-07-01    16
14     2  2010     4 2010-04-01    25
15     2  2009     9 2009-09-01    18
16     2  2010    11 2010-11-01    32
17     2  2011     2 2011-02-01    35
18     2  2011     8 2011-08-01    41

相关内容

  • 没有找到相关文章

最新更新