Разделение кадра данных на основе порогового значения - PullRequest
0 голосов
/ 22 сентября 2018

Мне нужно разделить этот фрейм данных на несколько фреймов, где временной интервал составляет менее 481 минуты.То есть эти куски данных нужны мне как отдельные кадры данных, чтобы исключить строки, которые имеют более длительную задержку между ними.Мне также нужен способ иметь уникальные имена для всех этих фреймов данных.

        lon      lat              dt          timelag
     -89.80958 38.11485 2017-02-03 06:00:34   359.98333
     -89.80855 38.11436 2017-02-03 12:00:33   119.88333
     -89.80845 38.11474 2017-02-03 14:00:26   480.11667
     -89.80888 38.11307 2017-02-03 22:00:33   839.98333
     -89.80898 38.11240 2017-02-04 12:00:32   240.00000
     -89.80848 38.11260 2017-02-04 16:00:32   119.90000
     -89.79967 38.11637 2017-02-04 18:00:26   119.81667
     -89.80796 38.11332 2017-02-04 20:00:15  1079.93333
     -89.80774 38.11411 2017-02-05 14:00:11   120.06667
     -89.80071 38.11200 2017-02-05 16:00:15   240.26667
     -89.79812 38.11583 2017-02-05 20:00:31   119.70000
     -89.79623 38.11827 2017-02-05 22:00:13   960.28333
     -89.78739 38.11911 2017-02-06 14:00:30   119.78333
     -89.78946 38.11806 2017-02-06 16:00:17   120.21667
     -89.78921 38.11793 2017-02-06 18:00:30   119.86667
     -89.78913 38.11887 2017-02-06 20:00:22   119.76667
     -89.78917 38.11877 2017-02-06 22:00:08   600.15000
     -89.80774 38.11411 2017-02-05 14:00:11   120.06667
     -89.80071 38.11200 2017-02-05 16:00:15   240.26667

Полученные фреймы данных должны выглядеть следующим образом:

        lon      lat              dt          timelag
     -89.80958 38.11485 2017-02-03 06:00:34   359.98333
     -89.80855 38.11436 2017-02-03 12:00:33   119.88333
     -89.80845 38.11474 2017-02-03 14:00:26   480.11667

        lon      lat              dt          timelag
     -89.80898 38.11240 2017-02-04 12:00:32   240.00000
     -89.80848 38.11260 2017-02-04 16:00:32   119.90000
     -89.79967 38.11637 2017-02-04 18:00:26   119.81667

        lon      lat              dt          timelag
     -89.80774 38.11411 2017-02-05 14:00:11   120.06667
     -89.80071 38.11200 2017-02-05 16:00:15   240.26667
     -89.79812 38.11583 2017-02-05 20:00:31   119.70000

        lon      lat              dt          timelag
     -89.78739 38.11911 2017-02-06 14:00:30   119.78333
     -89.78946 38.11806 2017-02-06 16:00:17   120.21667
     -89.78921 38.11793 2017-02-06 18:00:30   119.86667
     -89.78913 38.11887 2017-02-06 20:00:22   119.76667

        lon      lat              dt          timelag
     -89.80774 38.11411 2017-02-05 14:00:11   120.06667
     -89.80071 38.11200 2017-02-05 16:00:15   240.26667

Спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Я сделал это для тебя.Рекомендуется импортировать данные как DF:

storage <- vector('list', sum(DF$timelag > 481)+1)

spliter <- which(DF$timelag > 481)

count <- 1
Last <- 1
for (Logical in DF$timelag < 481) {

    if (Logical == FALSE) {
        storage[[count]] <- DF[Last:(spliter[count]-1), ]
        Last <- spliter[count] + 1
        count <- count + 1
    }
}

Каждый кадр данных будет помещен в список (storage) индекса

...