【发布时间】:2021-09-13 16:41:39
【问题描述】:
这是我的数据集的表示
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
【问题讨论】:
-
看看this,注意期间和时长的区别。你要哪个?
标签: r date tidyverse lubridate