Как правильно передать неравенство или диапазон в dplyr :: case_when

Я хотел сопоставить конкретный блок if в java

   ...
   ...
   if(isTrue){
       doAction();

   }
...
...
}

. Если я использую regExp

if \(isTrue(.|\n)*}

, он включал замыкающую скобку для блока метода, поэтому я использовал

if \(!isTrue([^}.]|\n)*}

, чтобы исключить заключительную скобку из соответствия шаблону.

0
задан Henrik 3 March 2019 в 11:56
поделиться

1 ответ

Попробуйте:

new_new_mtcars <- new_mtcars %>%
  mutate(grouping = case_when(
    min(wt) <= wt & wt <= mean(wt) + 0.99 ~ "group1",
    wt >= max(wt) - 0.5  ~ "group2"
  ))

Вам не нужно ссылаться на ваш фрейм данных внутри канала после первой ссылки. Кроме того, min(wt) <= wt <= mean(wt) + 0.99 всегда будет выдавать ошибку, так как вам всегда нужно иметь две переменные на оператор, поэтому вам нужно указать wt <= mean(wt) + 0.99 в качестве другого условия.

Исключением было бы, если бы вы использовали что-то вроде between, где вы сначала указали промежуточную переменную, а затем нижнюю и верхнюю границы, например:

new_new_mtcars <- new_mtcars %>%
  mutate(grouping = case_when(
    between(wt, min(wt), mean(wt) + 0.99) ~ "group1",
    wt >= max(wt) - 0.5  ~ "group2"
  ))
0
ответ дан arg0naut91 3 March 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: