Несколько data.frames от одного с почти случайным критерием выбора
Это следующий вопрос из Извлечь несколько фреймов данных из одного с критериями выбора.
Допустим, данные такие же, как в приведенном выше примере
df <- data.frame(x1 = runif(1000), x2 = runif(1000), x3 = runif(1000),
split = sample( c('SPLITMEHERE', 'OBS'), 1000, replace=TRUE, prob=c(0.1, 0.9) ))
По сути, мне нужно более общее решение, чем в приведенном примере.
А именно, в некоторых округах за несколько месяцев (каждый месяц - файл.txt) есть только 1 таблица, и, следовательно, только одна 'SPLITMEHERE'.
Например, четвертый округ состоит только из одной таблицы, что означает, что группа этого округа должна заканчиваться в первом SPLITMEHERE, а не во втором. Кроме того, последний округ состоит из трех таблиц, но это не имеет значения, так как это в конце, поэтому я могу легко объединить последнюю группу.
Проблема в том, что это не всегда четвертый округ, который состоит из одной таблицы, иногда есть другие.
Допустим, у нас есть это из вышеуказанного набора данных:
x1 x2 x3 split
1 0.591940061 0.635445182 0.304498259 SPLITMEHERE
2 0.510158838 0.170956885 0.881018211 OBS
3 0.938369076 0.495642515 0.171227120 OBS
4 0.366153042 0.464698494 0.550931566 OBS
5 0.051998873 0.222881187 0.934175135 OBS
6 0.706940809 0.735885367 0.666272118 SPLITMEHERE
7 0.244219533 0.340480033 0.144009797 OBS
8 0.546891246 0.024010211 0.151338479 OBS
9 0.032659978 0.174774606 0.576820824 OBS
10 0.641988559 0.575596526 0.911188682 OBS
11 0.111024861 0.969227957 0.643551420 OBS
12 0.179469011 0.052698538 0.199299193 OBS
13 0.199203707 0.429210222 0.525920379 SPLITMEHERE
14 0.837223042 0.556442838 0.881305105 OBS
15 0.628854814 0.874139058 0.199226364 OBS
16 0.618989684 0.784011205 0.038021599 OBS
17 0.421893407 0.394786134 0.519100402 OBS
18 0.126453054 0.926114653 0.687669218 OBS
19 0.739393898 0.938428464 0.110824400 OBS
20 0.582882966 0.198520021 0.942501112 OBS
21 0.143852453 0.963329219 0.993098109 OBS
22 0.249366828 0.242881240 0.486960755 OBS
23 0.060602695 0.797436479 0.432171847 SPLITMEHERE
24 0.013947914 0.028245990 0.489656647 OBS
25 0.795170730 0.541771474 0.122952446 OBS
26 0.786673408 0.284252650 0.305914856 OBS
27 0.591369056 0.321041728 0.285482027 OBS
28 0.899577535 0.468031873 0.588038383 SPLITMEHERE
29 0.955853329 0.552076328 0.825239050 OBS
30 0.634738808 0.050917396 0.730090024 OBS
Допустим, в печатном виде есть три округа, и я хочу три кадра данных следующим образом:
df1
1 0.510158838 0.170956885 0.881018211 OBS
2 0.938369076 0.495642515 0.171227120 OBS
3 0.366153042 0.464698494 0.550931566 OBS
4 0.051998873 0.222881187 0.934175135 OBS
5 0.244219533 0.340480033 0.144009797 OBS
6 0.546891246 0.024010211 0.151338479 OBS
7 0.032659978 0.174774606 0.576820824 OBS
8 0.641988559 0.575596526 0.911188682 OBS
9 0.111024861 0.969227957 0.643551420 OBS
10 0.179469011 0.052698538 0.199299193 OBS
df2
1 0.837223042 0.556442838 0.881305105 OBS
2 0.628854814 0.874139058 0.199226364 OBS
3 0.618989684 0.784011205 0.038021599 OBS
4 0.421893407 0.394786134 0.519100402 OBS
5 0.126453054 0.926114653 0.687669218 OBS
6 0.739393898 0.938428464 0.110824400 OBS
7 0.582882966 0.198520021 0.942501112 OBS
8 0.143852453 0.963329219 0.993098109 OBS
9 0.249366828 0.242881240 0.486960755 OBS
df3
1 0.013947914 0.028245990 0.489656647 OBS
2 0.795170730 0.541771474 0.122952446 OBS
3 0.786673408 0.284252650 0.305914856 OBS
4 0.591369056 0.321041728 0.285482027 OBS
5 0.955853329 0.552076328 0.825239050 OBS
6 0.634738808 0.050917396 0.730090024 OBS
Есть идеи?