我有一个包含有关通用事件的日期信息的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?中做到这一点?
提前谢谢。
答案 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
。