Рефакторинг этого кода в пределах al oop в R - PullRequest
0 голосов
/ 04 марта 2020

I sh для записи al oop, которая удаляет все значения из каждого столбца года, по одному, если значение, указанное в поле Начальный год, больше, чем значение в столбце именованного года.

X <- X %>%
  mutate(`2017` = ifelse(as.numeric(`Start Year`) > 2017, 0, `2017`)) %>%
  mutate(`2018` = ifelse(as.numeric(`Start Year`) > 2018, 0, `2018`)) 

Мне нужно повторять это несколько лет, но я не уверен, как ссылаться на столбцы с именами 2017, 2018 et c. в общем oop. Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2020

Я бы предложил сделать это аккуратно. (; Сначала соберите все столбцы года, как показано ниже:

df <- dplyr::tibble(
  x = runif(10),
  y = runif(10),
  "2017" = runif(10),
  "2018" = runif(10),
  "2019" = runif(10)
)

df <- df %>% 
  gather(year, value, "2017":"2019")

Затем выполните фильтрацию по start_year

start_year <- 2018

df %>% 
  filter(year >= start_year)

или замените значения для всех остальных лет нулями в качестве кода предлагает:

df %>% 
    mutate(value = ifelse(year >= start_year, value, 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...