R - Как добавить данные в новый столбец по заданным условиям? - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь добавить значения в новый столбец на основе значений в другом столбце. Используя в качестве примера данные радужной оболочки, моя основная логика такова: «Если радужная оболочка $ Sepal.Length> 5, то радужная оболочка $ size == 'TRUE'".

> head(iris, 2)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa

Используя данные радужной оболочки в качестве примера, моя основная логика: «Если радужная оболочка $ Sepal.Length> 5, то радужная оболочка $ size == 'TRUE'" для получения:

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species size
1          5.1         3.5          1.4         0.2  setosa   TRUE
2          4.9         3.0          1.4         0.2  setosa   NA

Я могу подмножество данных, но не могу получить синтаксис для передачи значения обратно. Как то так?

subset(iris, iris$Sepal.Length >= 5) %>% iris$size == 'TRUE'

Ответы [ 4 ]

0 голосов
/ 14 сентября 2018

Либо:

iris$size <- iris$Sepal.Length >= 5

, либо, если вы хотите пойти по обратному маршруту

iris %>% mutate(size = Sepal.Length >= 5)
0 голосов
/ 14 сентября 2018

Вы можете сделать что-то подобное, используя оператор ifelse

iris$Size <- ifelse(iris$Sepal.Length >= 5, "TRUE", "FALSE")
0 голосов
/ 14 сентября 2018

Использование dplyr. Выход логического выражения: TRUE/FALSE. Лучше не создавать вывод символов

library(dplyr)
iris %>%
    mutate(size = Sepal.Length >=5)
0 голосов
/ 14 сентября 2018
iris$size[iris$Sepal.Length>=5] <- TRUE

Это в основном читается как "положить ИСТИНА в размер ириса $ для тех строк, где ирис $ Sepal.Length равен или больше 5".

...