R-如何通过子集条件将数据添加到新列?

时间:2018-09-14 14:59:04

标签: r subset

我正在尝试根据另一列中的值将值添加到新列中。以鸢尾花数据为例,我的基本逻辑是“如果iris $ Sepal.Length> 5,那么iris $ 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

以虹膜数据为例,我的基本逻辑是“如果iris $ Sepal.Length> 5,则iris $ 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 :(得分:2)

您可以使用ifelse语句执行类似的操作

iris$Size <- ifelse(iris$Sepal.Length >= 5, "TRUE", "FALSE")

答案 1 :(得分:2)

使用dplyr。逻辑表达式的输出为TRUE/FALSE。最好不要创建字符输出

library(dplyr)
iris %>%
    mutate(size = Sepal.Length >=5)

答案 2 :(得分:2)

要么:

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

或者,如果您想沿着tidyverse路线走

iris %>% mutate(size = Sepal.Length >= 5)

答案 3 :(得分:1)

iris$size[iris$Sepal.Length>=5] <- TRUE

这基本上是“将虹膜$ Sepal.Length等于或大于5的那些行放入TRUE至虹膜$大小”。