Выберите столбцы в dplyr условно - PullRequest
0 голосов
/ 25 октября 2018
library(nycflights13)
library(dplyr)

head(flights)

id.vec <- c("a", "b", "c")

for(i in seq_along(id.vec)){

  id <- id.vec[i]

  temp <- flights %>% dplyr::select(year, day, dep_time, arr_time) %>%
                      dplyr::mutate(year = year - mean(year),
                                    day = day - mean(day),
                                    dep_time = dep_time - mean(dep_time),
                                    arr_time = arr_time - mean(arr_time))

  # do some other tasks with temp file
}

У меня вопрос, как я могу поставить условие, что если id == "c", то не выбирать столбец dep_time, а также не выполнять dep_time = dep_time - mean(dep_time)

1 Ответ

0 голосов
/ 25 октября 2018

Простой вариант - включить оператор if ... else ... в цикл for:

for(i in seq_along(id.vec)){


  id <- id.vec[i]

  if(id == 'c') {
  temp <- flights %>% dplyr::select(year, day, arr_time) %>%
    dplyr::mutate(year = year - mean(year),
                  day = day - mean(day),
                  arr_time = arr_time - mean(arr_time))
  } else {
    temp <- flights %>% dplyr::select(year, day, dep_time, arr_time) %>%
      dplyr::mutate(year = year - mean(year),
                    day = day - mean(day),
                    dep_time = dep_time - mean(dep_time),
                    arr_time = arr_time - mean(arr_time))
  }

  # do some other tasks with temp file
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...