Заполнить последовательность условно на другие переменные в R - PullRequest
0 голосов
/ 16 октября 2018

Вот мои данные:

df <- tibble::tribble(
  ~Group, ~Year, ~given, ~required,
     "A", 2017L,     3L,        1L,
     "A", 2017L,     4L,        2L,
     "A", 2017L,     8L,        6L,
     "A", 2018L,     1L,        7L,
     "A", 2018L,     4L,       10L,
     "B", 2018L,     8L,        1L,
     "B", 2019L,     3L,        4L,
     "B", 2019L,     4L,        5L)

Я хочу вычислить «необходимый» так, чтобы для любой «Группы»:

  1. Первая запись «требуется»получает значение 1.
  2. Дельта между «обязательными» и «заданными» переменными должна быть одинаковой.
  3. Для любого года минимальные значения для «заданной» переменной могут быть1, а максимальное значение равно 8.

Как рассчитать переменную «требуемый», используя переменные «Группа», «Год» и «данный»?

1 Ответ

0 голосов
/ 16 октября 2018
library(tidyverse)

df2 <- df %>%
  group_by(Group) %>%
  mutate(required = c(1, diff(given)),
         required = ifelse(required < 0, max(given) - abs(required), required),
         required = cumsum(required)) %>%
  ungroup()
df2
# # A tibble: 8 x 4
#   Group  Year given required
#   <chr> <int> <int>    <dbl>
# 1 A      2017     3        1
# 2 A      2017     4        2
# 3 A      2017     8        6
# 4 A      2018     1        7
# 5 A      2018     4       10
# 6 B      2018     8        1
# 7 B      2019     3        4
# 8 B      2019     4        5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...