case_when с формулой - PullRequest
       0

case_when с формулой

0 голосов
/ 30 января 2020

Я работаю с iris фреймом данных и хочу создать столбец Result со следующими условиями:

если Sepal.Length >=5 назначить Result=Sepal.Length*Sepal.Width еще, если Sepal.Length <5 and Sepal.Length >4.3 назначить Result=Sepal.Length+Sepal.Width. иначе назначьте Result=Sepal.Length/Sepal.Width

Я пытался case_when, но я думаю, что это работает, только если назначенное значение является строкой.

Какой лучший способ сделать это?

1 Ответ

4 голосов
/ 30 января 2020

Попробуйте это:

library(dplyr)
iris %>% 
   mutate(Result = case_when(
     Sepal.Length >=5 ~ Sepal.Length*Sepal.Width,
     Sepal.Length <5 & Sepal.Length >4.3 ~ Sepal.Length+Sepal.Width,
     TRUE ~ Sepal.Length/Sepal.Width
   ))
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species    Result
1            5.1         3.5          1.4         0.2     setosa 17.850000
2            4.9         3.0          1.4         0.2     setosa  7.900000
3            4.7         3.2          1.3         0.2     setosa  7.900000
4            4.6         3.1          1.5         0.2     setosa  7.700000
5            5.0         3.6          1.4         0.2     setosa 18.000000
6            5.4         3.9          1.7         0.4     setosa 21.060000
7            4.6         3.4          1.4         0.3     setosa  8.000000
8            5.0         3.4          1.5         0.2     setosa 17.000000
9            4.4         2.9          1.4         0.2     setosa  7.300000
10           4.9         3.1          1.5         0.1     setosa  8.000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...