改变 IF ELSE 多列

Mutate IF ELSE MULTIPLE COLUMNS

我有一个包含两列(LAB 和 OID)的文件 (df)...我想在 df 文件上创建一个新变量:column3(OID_new),使用第 1 列的信息(实验室) 和 2 (OID):

LAB      OID OID_new
12       NA    12
13       NA    13
14       NA    14
plate_1  18    18
plate_2  24    24
Plate_3  23    23

为此,我尝试了:

df %>%
 mutate(OID_new= ifelse(OID == NA,df$LAB,
                    ifelse(OID ^= NA,"df$OID")))-> df1

但是不行

提前致谢

您可以通过使用 ifelse() 来实现,正如您所尝试的那样。有几点要提一下:

  • ifelse() 需要三个语句:
    1. 一个测试(此处:检查 OID 是否为 NAis.na(OID)
    2. 如果你的测试结果是 TRUE 的输出:return LAB
    3. 如果您的测试结果在 FALSE 中,则输出:return OID
  • 如果您通过管道 %>% 您的数据框,则无需使用 $
  • 访问您的数据框
  • 基础 ifelse() 在这里更好,因为它的 dplyr 版本 if_else() 类型稳定并且会抛出错误。这可能更方便,但隐式强制转换后可能会出现意想不到的结果,所以要小心。

代码

df %>% mutate(OID_new = ifelse(is.na(OID), LAB, OID)) -> df1

输出

> df1
      LAB OID OID_new
1      12  NA      12
2      13  NA      13
3      14  NA      14
4 plate_1  18      18
5 plate_2  24      24
6 plate_3  23      23

数据

df <- structure(list(LAB = c("12", "13", "14", "plate_1", "plate_2", "plate_3"), 
                     OID = c(NA, NA, NA, 18, 24, 23)), 
                class = "data.frame", 
                row.names = c(NA, -6L))