计算20天内的案件数

时间:2020-08-06 04:38:08

标签: r

我有一个data.frame,可以查看犯罪发生率。一个城市第一次报告犯罪时,我们将其写为0。我们想将一个城市的第一次犯罪与其他犯罪进行比较,直到发现两者之间有20天的犯罪。发生这种情况时,我们将那个犯罪日与某个城市的其他犯罪进行比较,直到找到20天。我们用0和1对此进行编码,城市的第一个犯罪总是得到0。

我知道这可能会造成混淆,因此下面的data.frame希望可以更好地说明问题:

City     Days
City1    0
City1    4
City1    20
City2    0
City2    20
City3    0
City3    20
City3    30

因此,最终的data.frame将是

City     Days  Result
City1    0.     1
City1    4.     0
City1    20.    1
City2    0.     1
City2    20.    1
City3    0.     1
City3    20.    1
City3    30.    0

我目前有一个复杂的嵌套for循环,它循环遍历城市及其事件。我创建了一个索引,如果城市犯罪的差异大于20,该索引将更改。然后更新此索引。但是,这已变得乏味且可怕。任何其他选择都将是有益的。

2 个答案:

答案 0 :(得分:0)

也许您正在寻找此解决方案

< input type="file" name="article_input_file" id="article_input_file" accept=".xlsx,.xls" style="display: none" >

$("#article_input_file").click();

答案 1 :(得分:0)

您可以使用lag来抵消“天数”列以查找犯罪天数之间的差额:

library(dplyr)

df <- read.table(text = "City     Days
City1    0
City1    4
City1    20
City2    0
City2    20
City3    0
City3    20
City3    30", header = TRUE) %>%
  as_tibble()


df %>%
  group_by(City) %>%
  mutate(tmp = lag(Days),
         Result = ifelse(Days - tmp >= 20 | is.na(tmp), 1, 0)) %>%
  select(-tmp)