r - 如何根据 R 中的条件创建新变量

标签 r variables

我正在尝试根据某些条件创建一个新变量。

我的数据看起来像

a   b
1   NA
2   3
3   3
NA  2
NA  NA

我想要的是一个变量 c以至于
  • a不是 NA , bNA , c = a
  • aNA , b不是 NA , c = b
  • aNA , bNA , c = NA
  • a不是 NA , b不是 NA , 和 a == b , c = a
  • a不是 NA , b不是 NA , 和 a != b , c = "multiple_values"

  • 我怎样才能做到这一点?

    好像ifelse()不能做我想做的事。

    最佳答案

    除了条件之一,即'a','b'中的非NA元素,并且它们彼此不相等,所有其他条件都满足coalesce .所以,我们可以做一个 case_when通过应用 coalesce 根据最后一个条件和所有其他条件生成“multiple_values”

    library(dplyr)
    df1 %>%
         mutate(c = case_when(!is.na(a) & !is.na(b) & a != b ~ "multiple_values", 
                   TRUE ~ as.character(coalesce(a, b))))
    #   a  b               c
    #1  1 NA               1
    #2  2  3 multiple_values
    #3  3  3               3
    #4 NA  2               2
    #5 NA NA            <NA>
    

    数据
    df1 <- structure(list(a = c(1L, 2L, 3L, NA, NA), b = c(NA, 3L, 3L, 2L, 
     NA)), class = "data.frame", row.names = c(NA, -5L))
    

    关于r - 如何根据 R 中的条件创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55672622/

    相关文章:

    python - 在 Python 3.2+ 中添加到 locals()?

    python 和溢出字节?

    javascript - polymer ,观察全局变量

    r - 二项式数据的预测栅格范围超出 0-1(包 'raster')

    r - 使用 R 和 H2O 进行 Word2Vec 情感分类

    r - 如何对R中的两个变量进行交叉制表?

    php - 将变量从一个 php 包含文件传递到另一个 : global vs. 不

    json - 将不完整列表解析为具有两个不同问题的数据帧

    R:将因子转换为二进制矩阵的有效方法

    php - 在函数之间传递变量 - php