|
9 | 9 | #' @param ml_model ML model (optional)
|
10 | 10 | #' @return Data.frame with predictors
|
11 | 11 | .predictors <- function(samples, ml_model = NULL) {
|
| 12 | + UseMethod(".predictors", samples) |
| 13 | +} |
| 14 | +#' |
| 15 | +#' @export |
| 16 | +.predictors.sits <- function(samples, ml_model = NULL) { |
12 | 17 | # Prune samples time series
|
13 | 18 | samples <- .samples_prune(samples)
|
14 | 19 | # Get samples time series
|
|
61 | 66 | # Return predictors
|
62 | 67 | pred
|
63 | 68 | }
|
| 69 | +#' @export |
| 70 | +.predictors.sits_base <- function(samples, ml_model = NULL) { |
| 71 | + # Get predictors for time series |
| 72 | + # Prune samples time series |
| 73 | + samples <- .samples_prune(samples) |
| 74 | + # Get samples time series |
| 75 | + pred <- .ts(samples) |
| 76 | + # By default get bands as the same of first sample |
| 77 | + bands <- .samples_bands.sits(samples) |
| 78 | + # Create predictors... |
| 79 | + pred <- pred[c(.pred_cols, bands)] |
| 80 | + # Add sequence 'index' column grouped by 'sample_id' |
| 81 | + pred <- pred |> |
| 82 | + dplyr::select("sample_id", "label", dplyr::all_of(bands)) |> |
| 83 | + dplyr::group_by(.data[["sample_id"]]) |> |
| 84 | + dplyr::mutate(index = seq_len(dplyr::n())) |> |
| 85 | + dplyr::ungroup() |
| 86 | + # Rearrange data to create predictors |
| 87 | + pred <- tidyr::pivot_wider( |
| 88 | + data = pred, names_from = "index", values_from = dplyr::all_of(bands), |
| 89 | + names_prefix = if (length(bands) == 1) bands else "", |
| 90 | + names_sep = "" |
| 91 | + ) |
| 92 | + # get predictors for base data |
| 93 | + base <- dplyr::bind_rows(samples$base_data) |
| 94 | + base <- base[,-1] |
| 95 | + # join time series predictors with base data predictors |
| 96 | + pred <- dplyr::bind_cols(pred, base) |
| 97 | + # Return predictors |
| 98 | + pred |
| 99 | +} |
64 | 100 |
|
65 | 101 | #' @title Get predictors names with timeline
|
66 | 102 | #' @keywords internal
|
|
0 commit comments