Я пытаюсь выполнить фильтрацию на основе списка выбора из окружения , чтобы пользователь мог выбрать, какие две среды сравнивать
glimpse(df)
Observations: 739
Variables: 6
$ svcname <chr> "Forecasts", "15minLoadForeca...
$ application <chr> "app1", "app2", "app3", "app1", "app2", "app3", "app1"...
$ environment <chr> "MAPStage", "MAPTest", "Production", "Training", "MAPS...
$ payload_size <dbl> 152.24, 104.64, 153.28, 149.25, 309.80, 3.12, 653.55, ...
$ dt <date> 2018-09-11, 2018-09-11, 2018-09-11, 2018-09-11, 2018-...
$ id <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
Я создаю уникальный список из окружения
(lst_envc <- unique(df$environment))
lst_envc
[1] "MPStage", "MPTest", "Производство", "Обучение", "Сцена"
[6] «Тест»
Я распространяю этот df на основе окружения и payload_size , получаю df_new и заполняю пустые ячейки 0
df_new <- tidyr::spread(df,environment,payload_size,fill = 0
Observations: 739
Variables: 10
$ svcname <chr> "Forecasts", "15LoadForecas...
$ application <chr> "app1", "app2", "app3", "app1", "app2", "app3", "app1",...
$ dt <date> 2018-09-11, 2018-09-11, 2018-09-11, 2018-09-11, 2018-0...
$ id <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ...
$ MPStage <dbl> 152.24, 0.00, 0.00, 0.00, 309.80, 0.00, 0.00, 0.00, 164...
$ MPTest <dbl> 0.00, 104.64, 0.00, 0.00, 0.00, 3.12, 0.00, 0.00, 0.00,...
$ Production <dbl> 0.00, 0.00, 153.28, 0.00, 0.00, 0.00, 653.55, 0.00, 0.0...
$ Stage <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0...
$ Test <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0...
$ Training <dbl> 0.00, 0.00, 0.00, 149.25, 0.00, 0.00, 0.00, 393.07, 0.0...
В этом представлении удаляются все среды, кроме MPStage , представленных lst_envc [[1] и Prod
Я пытаюсь создать еще одну df, которая имеет только одну среду, и отфильтровываю только значения больше 0 . Здесь происходит сбой фильтра
df_subset <- df_new %>%
dplyr::select(., svcname, application, dt, id, lst_envc[[1]], Production)
A tibble: 739 x 6
Groups: svcname, application [189]
svcname application dt id MAPStage Production
<chr> <chr> <date> <int> <dbl> <dbl>
1 15NForecasts app 2018-09-11 1 152.24 0.00
2 15NForecasts app 2018-09-11 2 0.00 0.00
3 15NForecasts app 2018-09-11 3 0.00 153.28
4 15NForecasts app 2018-09-11 4 0.00 0.00
5 5LForecast app 2018-09-11 5 309.80 0.00
6 5LForecast app 2018-09-11 6 0.00 0.00
7 5LForecast app 2018-09-11 7 0.00 653.55
8 5LForecast app 2018-09-11 8 0.00 0.00
9 5NForecasts app 2018-09-11 9 164.62 0.00
10 5NForecasts app 2018-09-11 10 0.00 0.00
... with 729 more rows
another_df <- df_subset%>%
select(., - Production) %>%
filter(lst_envc[[1]] > 0)
У меня должно быть только 128 строк, но ничего не отфильтровано :(
A tibble: 739 x 5
Groups: svcname, application [189]
svcname application dt id MPStage
<chr> <chr> <date> <int> <dbl>
1 Forecasts app 2018-09-11 1 152.24
2 Forecasts app 2018-09-11 2 0.00
3 Forecasts app 2018-09-11 3 0.00
4 Forecasts app 2018-09-11 4 0.00
5 Forecast app 2018-09-11 5 309.80
6 Forecast app 2018-09-11 6 0.00
7 Forecast app 2018-09-11 7 0.00
8 Forecast app 2018-09-11 8 0.00
9 5LoadForecasts app 2018-09-11 9 164.62
10 5LoadForecasts app 2018-09-11 10 0.00
... with 729 more row