小编Jam*_*lan的帖子

计算日期范围间隔的部分重叠数

我需要在大约 150K 行的数据帧上运行循环。但是,循环需要检查每一行并检查一个检查数据集中每隔一行的条件。我的代码对于玩具数据集运行良好,它产生正确的值,但对于我的实际数据集来说太慢了。我让它运行了几个小时,但它仍然没有完成。所以我希望有人能更好地了解如何解决这个问题。

#R version 3.5.1 Windows 64-bit

#Example dataset
my_df <- data.frame("PERSON" = c("A","A","A","B","A","A","B"),
                    "DATE_START" = c("2019-01-15","2019-01-10","2019-01-20","2019-01-19","2018-12-20","2018-03-03","2019-05-01"),
                    "DATE_FINISH" = c("2019-01-30","2019-01-18","2019-02-05","2019-01-23","2019-02-10","2018-04-01","2019-06-06")
                    )
#Each row is a task that the assigned person is working on
my_df
   PERSON   DATE_START DATE_FINISH
1       A   2019-01-15  2019-01-30
2       A   2019-01-10  2019-01-18
3       A   2019-01-20  2019-02-05
4       B   2019-01-19  2019-01-23
5       A   2018-12-20  2019-02-10
6       A   2018-03-03  2018-04-01
7       B   2019-05-01  2019-06-06
Run Code Online (Sandbox Code Playgroud)

我想知道的是,对于第 1 行,A 的开始日期和完成日期之间还有多少其他任务重叠?(包括其所在的行)

所以我正在寻找的答案是

   PERSON   DATE_START DATE_FINISH  NUMBER_OF_TASKS
1       A   2019-01-15  2019-01-30  4 …
Run Code Online (Sandbox Code Playgroud)

performance for-loop r apply data.table

2
推荐指数
1
解决办法
675
查看次数

JS 不能使用在 for 循环中初始化的数组

我无法理解 JS 中的作用域是如何工作的,我的背景是 R 和 Python。

这是一个玩具示例。games_array 最后总是打印为空。并且控制台中似乎不存在数组变量。

    for(var row_i = 0; row_i < 50; row_i++){

        var games_array = [];

        if(row_i % 2 == 0){

            console.log(data[row_i].name);
            games_array.push(data[row_i].name);
        }
    }
    console.log(games_array);
Run Code Online (Sandbox Code Playgroud)

但是这有效:

    var games_array = [];

    for(var row_i = 0; row_i < 50; row_i++){

        if(row_i % 2 == 0){

            console.log(data[row_i].name);
            games_array.push(data[row_i].name);
        }
    }
    console.log(games_array);
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我不能创建一个空数组并在 for 循环中使用它。我需要将其包装在外循环中并在外循环中使用 games_array。

任何帮助表示赞赏。

javascript

2
推荐指数
1
解决办法
31
查看次数

标签 统计

apply ×1

data.table ×1

for-loop ×1

javascript ×1

performance ×1

r ×1