不带for循环的seq的间隔数
我有一个带有日期的数据框,我使用了不带for循环的seq的间隔数,r,date,dataframe,R,Date,Dataframe,我有一个带有日期的数据框,我使用了seq()在每年的最低和最高日期之间 数据帧: daysOfStop dateConsult 1: NA 2002-11-17 2: NA 2003-11-03 3: NA 2004-12-16 4: NA 2006-01-31 5: NA 2006-01-31 6: NA 2003-02-05 7: NA 200
seq()
在每年的最低和最高日期之间
数据帧:
daysOfStop dateConsult
1: NA 2002-11-17
2: NA 2003-11-03
3: NA 2004-12-16
4: NA 2006-01-31
5: NA 2006-01-31
6: NA 2003-02-05
7: NA 2003-09-29
8: NA 2005-08-01
9: NA 2005-08-01
10: NA 2005-08-01
seq()
的结果:
我想做的是创建一个新列,其中的值由seq()
的间隔定义,而不进行循环(这需要很多时间,因为我有超过120000行)
因此:
在“2002-11-17”
和“2003-11-17”
之间,是第1年(第一个间隔);
在“2003-11-17”
和“2004-11-17”
之间,是第二年(第二个间隔)
等等
预期结果:
daysOfStop dateConsult numYear
1: NA 2002-11-17 1
2: NA 2003-11-03 1
3: NA 2004-12-16 3
4: NA 2006-01-31 4
5: NA 2006-01-31 4
6: NA 2003-02-05 1
7: NA 2003-09-29 1
8: NA 2005-08-01 3
9: NA 2005-08-01 3
10: NA 2005-08-01 3
数据:
structure(list(daysOfStop = c(NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
dateConsult = structure(c(12008, 12359, 12768, 13179, 13179,
12088, 12324, 12996, 12996, 12996), class = "Date")), .Names = c("daysOfStop",
"dateConsult"), class = c("data.table", "data.frame"), row.names = c(NA,
-10L), .internal.selfref = <pointer: 0x0000000006360788>)
structure(list(daysOfStop=c)(NA_real,NA_real,NA_real,NA_real,NA_real,
那是真的,那是真的,那是真的,那是真的,那是真的,那是真的,那是真的,
dateConsult=结构(c(1200812359127681317913179,
120881232412996129961299612996),class=“Date”),.Names=c(“daysOfStop”,
“dateConsult”),class=c(“data.table”、“data.frame”),row.names=c(NA,
-10L),.internal.selfref=)
我们可以使用findInterval
dt1[, numYear := findInterval(dateConsult, seq(min(dateConsult),
max(dateConsult), "1 year"))]
这就是我想要的功能。非常强大。谢谢
dt1[, numYear := findInterval(dateConsult, seq(min(dateConsult),
max(dateConsult), "1 year"))]