【问题标题】:How to create a boolean variable in a data set?如何在数据集中创建布尔变量?
【发布时间】:2018-09-03 01:35:39
【问题描述】:

如何为具有 2 个向量的数据框创建布尔变量?我希望布尔变量识别vector1中的哪个对象大于vector2中的对象。

【问题讨论】:

    标签: r


    【解决方案1】:

    要创建一个布尔或逻辑向量来测试两个向量(或数据框中的列),我们可以设置一个逻辑测试,例如a > b,它将返回TRUEFALSE

    可以根据下面的示例将此输出分配给向量本身。

    # set seed for random data
    set.seed(123)
    
    # create data frame with two random vectors
    df <- data.frame(a = rnorm(10),
                     b = rnorm(10))
    
    # create a logical (boolean) vector
    df$c <- (df$a > df$b)
    
    print(df)
    #>              a          b     c
    #> 1  -0.56047565  1.2240818 FALSE
    #> 2  -0.23017749  0.3598138 FALSE
    #> 3   1.55870831  0.4007715  TRUE
    #> 4   0.07050839  0.1106827 FALSE
    #> 5   0.12928774 -0.5558411  TRUE
    #> 6   1.71506499  1.7869131 FALSE
    #> 7   0.46091621  0.4978505 FALSE
    #> 8  -1.26506123 -1.9666172  TRUE
    #> 9  -0.68685285  0.7013559 FALSE
    #> 10 -0.44566197 -0.4727914  TRUE
    

    reprex package (v0.2.0) 于 2018 年 9 月 3 日创建。

    【讨论】:

      【解决方案2】:

      如果我们比较两列的对应元素

      with(df1, vector1 > vector2)
      

      用于将每个元素与所有其他元素进行比较

      with(df1, outer(vector1, vector2, `>`))
      

      或者

      with(df1, t(sapply(vector1, `>`, vector2)))
      

      【讨论】:

      • 如何在环境窗口中得到这个?
      • 有没有办法做到这一点,首先创建一个对所有对象都为 false 的变量,然后使用 == 或 > 逻辑运算符将所有对象更改为 true?
      • @BatmanTeam 如果您的示例是 df1 &lt;- data.frame(vector1 = c(4, 3, 7, 5, 9), vector2 = c(3, 9, 8, 14, 6)),那么预期的输出应该是什么
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2016-06-10
      • 2021-03-05
      相关资源
      最近更新 更多