【问题标题】:Creating new column based on conditions of two other columns根据其他两列的条件创建新列
【发布时间】:2021-08-30 14:38:06
【问题描述】:

我是 R 新手,在操作数据集时遇到了一些问题。我需要根据另外两列的条件在我的数据集中创建一个新列。

我有一列“is_3t_mine”,取值为 0 或 1,另一列“is_gold_mine”取值为 0 或 1。

我需要满足条件的第三列“dfa_mine”;

如果 is_3t_mine == 0 & is_gold_mine == 0 那么 "dfa_mine" = 0 所有其他迭代 "dfa_mine" = 1

我一直在尝试使用 dplyr 的管道功能来实现这一点,但没有任何成功。

【问题讨论】:

  • 欢迎来到 Stack Overflow!我刚刚将您的问题标记为重复问题(这是我认为以前有人问过并回答过的地方)stackoverflow.com/q/65163562/8400969。如果您觉得您的问题很独特,请务必通过解释它与其他问题的不同之处来展示研究,并包含示例数据和尽可能多的关于您已经尝试过的信息的信息。一般来说,听起来你可能想要df %>% mutate(dfa_mine = as.numeric(sum(is_3t_mine, gold_mine)>0))

标签: r dataframe multiple-columns data-manipulation


【解决方案1】:

我们可以使用

df1$dfa_mine <- with(df1, +(!(is_3_mine == 0 & is_gold_mine == 0)))

【讨论】:

    【解决方案2】:

    这里有 4 种方法可以具体完成您想要做的事情。

    1. 最简单

      df1$dfa_mine1 <- 1- as.numeric(df1$is_3t_mine == 0 & df1$is_gold_mine == 0)
      
    2. 使用相反的条件。但它更直接。

       df1$dfa_mine2 <- as.numeric(df1$is_3t_mine == 1 | df1$is_gold_mine == 1)
      
    3. 利用零是乘法吸收元素的性质

       df1$dfa_mine3 <- 1- ((1-df1$is_3t_mine)%%2) * ((1-df1$is_gold_mine)%%2)
      
    4. 用 $ 符号重写 akrun 的答案。

       df1$dfa_mine4 <- with(df1, +(!(df1$is_3t_mine == 0 & df1$is_gold_mine == 0)))
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 2017-10-13
      相关资源
      最近更新 更多