如果您有想要采样的有序数据的数据框,您可以过滤row_number
:
library(tidyverse)
airquality %>%
arrange(Month, Day) %>%
filter(row_number() %% 10 == 0) %>%
head()
#> Ozone Solar.R Wind Temp Month Day
#> 1 NA 194 8.6 69 5 10
#> 2 11 44 9.7 62 5 20
#> 3 115 223 5.7 79 5 30
#> 4 71 291 13.8 90 6 9
#> 5 12 120 11.5 73 6 19
#> 6 NA 31 14.9 77 6 29
由于每个月没有分组,因此保留了每 10 行(这意味着Day
从 10s 到 9s)。分组方式Month
解决了这个问题:
airquality %>%
arrange(Month, Day) %>%
group_by(Month) %>%
filter(row_number() %% 10 == 0) %>%
head()
#> # A tibble: 6 x 6
#> # Groups: Month [2]
#> Ozone Solar.R Wind Temp Month Day
#> <int> <int> <dbl> <int> <int> <int>
#> 1 NA 194 8.60 69 5 10
#> 2 11 44 9.70 62 5 20
#> 3 115 223 5.70 79 5 30
#> 4 39 323 11.5 87 6 10
#> 5 13 137 10.3 76 6 20
#> 6 NA 138 8.00 83 6 30
当然,我们可以只使用filter(Day %% 10 == 0)
,但并不总是有这么好的数字可以使用!