如何删除R数据帧中连续出现的事件?

时间:2016-05-10 10:10:59

标签: r filter dataframe

我有一个包含有关通用事件的日期信息的R数据框: ID;起始日期; END_DATE

有时同一事件可能会在同一天(1)或距离一天(2)发生,例如:

(1) 1001; 2016年5月7日; 2016年5月11日 1001; 2016年5月11日; 2016年5月14日

(2) 1001; 2016年5月7日; 2016年5月11日 1001; 2016年5月12日; 2016年5月14日

在第一种情况下,事件“1001”结束并在同一天重新开始,而在第二种情况下,该事件在2017-05-11结束并在第二天再次开始。我想在两种情况下删除第二次出现的事件。 如果第二次出现的距离是两天或更多天,则可以保留第二次出现。我怎么能在R?中做到这一点?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

部分解决方案,我猜测数据的样子:

private void BindGrid()
{
    object id = Session["Id"];

    if(id != null)
    {
        user = Session["user"] as User;
    }

    string constr = ConfigurationManager.ConnectionStrings[0].ConnectionString;
    using(SqlConnection con = new SqlConnection(constr))
    {
        string query = "select Conferences.conferenceName , Conferences.conferencePlace , Conferences.conferenceDate , Conferences.category from Conferences inner join Users on Conferences.fk_Users = Users.Id where Users.Id =@Id";

        using(SqlCommand cmd = new SqlCommand(query))
        {

            cmd.Connection = con;
            cmd.Parameters.AddWithValue("@Id", user == null ? (object)DBNull.Value : (object)user.UserId);
            con.Open();
            GridView1.DataSource = cmd.ExecuteReader();
            GridView1.DataBind();                    
            con.Close();
        }
    }
}

然后,您可以删除library(data.table) dat <- data.table(id = c(1001,1001,1001,1001), start_date = as.Date(c("2016-05-07", "2016-05-11", "2016-05-07", "2016-05-12")), end_date = as.Date(c("2016-05-11", "2016-05-14", "2016-05-11", "2016-05-14"))) dat2 <- data.table(id = c(dat$id, NA), start_date = c(dat$start_date, NA), end_date = c(as.Date(NA), dat$end_date)) dat2[, dif := end_date - start_date] 行。

我使用了dif <= 0包,但你可以data.table