Как создать список фреймов данных в результате подстановки старого на основе некоторых условий? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть следующий фрейм данных:

    T   a  b  c
1   1   0  0  0
2   2   1  0  0
3   5   1  0  0
4   6   1  0  0
5   7   0  1  0
6   9   0  1  0
7   10  0  0  1
8   12  0  0  0
9   14  0  0  0
10  15  1  0  0
11  16  1  0  0
12  17  0  1  0
13  18  0  0  1

Я хочу установить поднабор этого фрейма данных и создать список фреймов данных.Каждый фрейм данных должен быть заполнен строками (старой), в которых есть последовательность последовательно «1» в столбце, затем в столбце b и, наконец, в столбце c.Ожидаемый результат (для этого фрейма данных) будет список из 2 фреймов данных:

data frame 1:
             T   a  b  c                          
         1   2   1  0  0                         
         2   5   1  0  0
         3   6   1  0  0
         4   7   0  1  0
         5   9   0  1  0
         6   10  0  0  1 
and data frame 2:
             T   a  b  c
         1   15  1  0  0
         2   16  1  0  0
         3   17  0  1  0
         4   18  0  0  1

Есть идеи?Заранее спасибо!

1 Ответ

0 голосов
/ 24 октября 2018

На основании ожидаемой выработки

i1 <- do.call(pmax, df1[-1])
grp <- inverse.rle(within.list(rle(i1 ==1), {values <- seq_along(values)}))
split(df1[i1==1,], grp[i1==1])
#$`2`
#   T a b c
#2  2 1 0 0
#3  5 1 0 0
#4  6 1 0 0
#5  7 0 1 0
#6  9 0 1 0
#7 10 0 0 1

#$`4`
#    T a b c
#10 15 1 0 0
#11 16 1 0 0
#12 17 0 1 0
#13 18 0 0 1
...