Вот базовое решение R и tidyverse
решение.Часть силы R в том, что для такой проблемы, как эта, R по умолчанию работает с векторами, что означает, что вам часто не нужен цикл for.Проблема в том, что в вашем цикле вы присваиваете значения NA
.Это на самом деле не избавляет от этих значений, оно просто дает им значение NA
.
В базе R вы можете использовать subset
, чтобы получить строки или столбцы фрейма данных, которые соответствуют определеннымКритерии:
subset(grupo, y >= 26 & y <= 34)
#> # A tibble: 11 x 2
#> ds y
#> <date> <dbl>
#> 1 2016-01-01 28.8
#> 2 2016-01-07 29.0
#> 3 2016-01-08 29.2
#> 4 2016-01-09 29.1
#> 5 2016-01-10 27.5
#> 6 2016-01-11 28.1
#> 7 2016-01-12 29.0
#> 8 2016-01-13 31.7
#> 9 2016-01-14 29.2
#> 10 2016-01-15 29.8
#> 11 2016-01-16 30.1
Или используя функции dplyr
, вы можете аналогичным образом фильтровать данные и использовать dplyr::between
.between(y, 26, 34)
является сокращением для y >= 26 & y <= 34
.
library(tidyverse)
grupo %>%
filter(between(y, 26, 34))
#> # A tibble: 11 x 2
#> ds y
#> <date> <dbl>
#> 1 2016-01-01 28.8
#> 2 2016-01-07 29.0
#> 3 2016-01-08 29.2
#> 4 2016-01-09 29.1
#> 5 2016-01-10 27.5
#> 6 2016-01-11 28.1
#> 7 2016-01-12 29.0
#> 8 2016-01-13 31.7
#> 9 2016-01-14 29.2
#> 10 2016-01-15 29.8
#> 11 2016-01-16 30.1
Создано в 2018-06-09 пакетом Представить (v0.2.0).