改变 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()
需要三个语句:
- 一个测试(此处:检查
OID
是否为 NA
:is.na(OID)
)
- 如果你的测试结果是
TRUE
的输出:return LAB
- 如果您的测试结果在
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))
我有一个包含两列(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()
需要三个语句:- 一个测试(此处:检查
OID
是否为NA
:is.na(OID)
) - 如果你的测试结果是
TRUE
的输出:returnLAB
- 如果您的测试结果在
FALSE
中,则输出:returnOID
- 一个测试(此处:检查
- 如果您通过管道
%>%
您的数据框,则无需使用$
访问您的数据框
- 基础
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))