Aliases: aggregate.stars aggregate
Keywords:
### ** Examples # aggregate time dimension in format Date tif = system.file("tif/L7_ETMs.tif", package = "stars") t1 = as.Date("2018-07-31") x = read_stars(c(tif, tif, tif, tif), along = list(time = c(t1, t1+1, t1+2, t1+3)))[,1:30,1:30] st_get_dimension_values(x, "time")
[1] "2018-07-31" "2018-08-01" "2018-08-02" "2018-08-03"
x_agg_time = aggregate(x, by = t1 + c(0, 2, 4), FUN = max) # aggregate time dimension in format Date - interval by_t = "2 days" x_agg_time2 = aggregate(x, by = by_t, FUN = max) st_get_dimension_values(x_agg_time2, "time")
[1] "2018-07-31" "2018-08-02"
#TBD: #x_agg_time - x_agg_time2 # aggregate time dimension in format POSIXct x = st_set_dimensions(x, 4, values = as.POSIXct(c("2018-07-31", "2018-08-01", "2018-08-02", "2018-08-03")), names = "time") by_t = as.POSIXct(c("2018-07-31", "2018-08-02")) x_agg_posix = aggregate(x, by = by_t, FUN = max) st_get_dimension_values(x_agg_posix, "time")
[1] "2018-07-31 UTC" "2018-08-02 UTC"
#TBD: # x_agg_time - x_agg_posix aggregate(x, "2 days", mean)
stars object with 4 dimensions and 1 attribute attribute(s): Min. 1st Qu. Median Mean 3rd Qu. Max. L7_ETMs.tif 17 43 58 57.58796 70 145 dimension(s): from to offset delta refsys point x/y time 1 2 2018-07-31 UTC 2 days POSIXct NA x 1 30 288776 28.5 SIRGAS 2000 / UTM zone 25S FALSE [x] y 1 30 9120761 -28.5 SIRGAS 2000 / UTM zone 25S FALSE [y] band 1 6 NA NA NA NA
if (require(ncmeta, quietly = TRUE)) { # Spatial aggregation, see https://github.com/r-spatial/stars/issues/299 prec_file = system.file("nc/test_stageiv_xyt.nc", package = "stars") prec = read_ncdf(prec_file, curvilinear = c("lon", "lat")) prec_slice = dplyr::slice(prec, index = 17, along = "time") nc = sf::read_sf(system.file("gpkg/nc.gpkg", package = "sf"), "nc.gpkg") nc = st_transform(nc, st_crs(prec_slice)) agg = aggregate(prec_slice, st_geometry(nc), mean) plot(agg) } # example of using a function for "by": aggregate by month-of-year d = c(10, 10, 150) a = array(rnorm(prod(d)), d) # pure noise times = Sys.Date() + seq(1, 2000, length.out = d[3]) m = as.numeric(format(times, "%m")) signal = rep(sin(m / 12 * pi), each = prod(d[1:2])) # yearly period s = (st_as_stars(a) + signal) %>% st_set_dimensions(3, values = times) f = function(x, format = "%B") { months = format(as.Date(paste0("01-", 1:12, "-1970")), format) factor(format(x, format), levels = months) } agg = aggregate(s, f, mean) plot(agg)