【问题标题】:nested ifelse statement - multiple values for 1 output嵌套 ifelse 语句 - 1 个输出的多个值
【发布时间】:2015-12-07 11:28:12
【问题描述】:

我有一个数据集,其中包含一个值从 1 到 5 的变量。 我想创建一个新列,其中值 1 和 3 变为 A,2 和 4 变为 B,5 变为 C

data$new <- ifelse(data$value == c("1", "3"), "A",  
                                 ifelse(data$value == c("2", "4"), "B", "C"))

这适用于 1、2 和 5。但由于某种原因,它不接受我为 A 和 B 输入多个数字。如果它是 1 或 3,我如何告诉 R 创建 A?

【问题讨论】:

    标签: r if-statement nested


    【解决方案1】:

    我认为在这里你应该使用运算符%in%。 它的工作原理是这样的:

    > '5' %in% c('1', '3', '5')
    [1] TRUE
    > '2' %in% c('1', '3', '5')
    [1] FALSE
    

    相反,相等== 的工作方式如下:

    > '2' == c('2', '4')
    [1]  TRUE FALSE
    

    ——它实际上输出两个布尔值的数组。并且可能ifelse 将数组的第一个作为测试的结果。

    因此,在您的示例中,它被用作data$value %in% c("1", "3")——data$value 数组的每个值都被测试为在给定数组中。

    PS

    还要注意——在你的例子中你使用字符串'1''2'等等——检查你是否真的想要字符串,而不是numerics。

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多