如果 else 在 r 中使用 %in%

if else in r using %in%

让我们假设我的第一个数据集是鸢尾花

 data(iris)
 head(iris)

   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
   5.1         3.5          1.4         0.2  setosa
   4.9         3.0          1.4         0.2  setosa
   4.7         3.2          1.3         0.2  setosa
   4.6         3.1          1.5         0.2  setosa
   5.0         3.6          1.4         0.2  setosa
   5.4         3.9          1.7         0.4  setosa

我的第二个数据集包含如下所示的列类型

   type
   setosa
   veranica
   Big Rosa
   virginica

我正在尝试在 iris 数据集中生成第六列,其值为 Yes 和 No,如果 iris$Species 中的值 == 2ndDataset$type 中的值为 Yes,否则为 no。

我有兴趣使用 %in% 选项执行此操作。我试过但失败了,这就是我目前所做的

  iris[(as.character(iris$Species ) %in% as.character(2ndDataset$type)) ,  Result = 1, Result = 0]

需要帮助。

如果您想以有序方式检查相等性(即,如果向量类型的元素 i 与向量种类中的元素 i 相同),则不能使用 %in% , 因为它检查向量类型的元素 i 是否包含在向量种类中的任何位置。

我可以想到两种方法来完成您正在寻找的事情:

# Generates dummy data
data(iris)
iris2 = iris
iris = cbind(iris, Values = NA)
# Creates a difference between iris2$Species (type) and iris$Species
iris2$Species[1] = "virginica"

第一种方式(没有 ifelse):

iris$Values = as.character(iris$Species) == as.character(iris2$Species)
iris$Values[iris$Values == TRUE] = "Yes"
iris$Values[iris$Values == FALSE] = "No"

第二种方式(更快):

iris$Values = ifelse(as.character(iris$Species) == as.character(iris2$Species), "Yes", "No")