R:确定每个日期间隔是否与数据框中的所有其他日期间隔重叠

时间:2019-10-08 09:47:01

标签: r dplyr lubridate

对于数据框中的每个日期间隔行,我想确定它是否与所有其他日期间隔重叠。排除自身。

带有开始日期和结束日期的数据框,表示时间间隔:

`data <- read.table(header=TRUE,text="
start.date             end.date
2019-09-01             2019-09-10
2019-09-05             2019-09-07
2019-08-25             2019-09-05
2019-10-10             2019-10-15
")`

此函数lubridate::int_overlaps()通过返回逻辑TRUE或FALSE,检查两个日期间隔是否重叠。

`int_overlaps(interval(ymd("2019-09-01"),ymd("2019-09-10")), interval(ymd("2019-09-05"), ymd("2019-09-07")))
[1] TRUE
int_overlaps(interval(ymd("2019-09-01"),ymd("2019-09-10")), interval(ymd("2019-10-10"), ymd("2019-10-15")))
[1] FALSE`

我想使用int_overlap()将每个日期间隔与除自身之外的所有其他日期间隔进行迭代,以确定它是否与其他日期重叠。

输出应如下所示:

`data <- read.table(header=TRUE,text="
start.date             end.date         overlaps
2019-09-01             2019-09-10       TRUE
2019-09-05             2019-09-07       TRUE
2019-08-25             2019-09-05       TRUE
2019-10-10             2019-10-15       FALSE
")
`

1 个答案:

答案 0 :(得分:0)

这是使用 webView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN) { WebView webView = (WebView) v; switch(keyCode) { case KeyEvent.KEYCODE_BACK: if (webView.canGoBack()) { //webView.goBack();// return true; } else { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finishAffinity(); // Close all activites System.exit(0); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } } } return false; } }); dplyr的一种选择,我们遍历purrr的索引,比较当前间隔和其他间隔。

Int