如何在RStudio中实现SQL的CASE WHEN THEN逻辑?
在RStudio中实现相同逻辑的代码
首先先构造示例数据集:
# 创建示例数据框 df <- data.frame( Field1 = c(1, 2, 3, 4), Field2 = c("A", "B", "B", "A"), Field3 = c("Y", NA, NA, "Y"), Field4 = c(NA, "Y", "N", NA), stringsAsFactors = FALSE )
方法一:使用Base R
直接用ifelse()函数实现条件判断,再筛选需要的列:
# 添加新列NameOfField df$NameOfField <- ifelse(df$Field1 == 1 & df$Field2 == "A", df$Field3, df$Field4) # 保留目标列 result_base <- df[, c("Field1", "NameOfField")] # 查看结果 print(result_base)
方法二:使用tidyverse(dplyr)
这种写法和SQL的CASE WHEN逻辑更贴近,可读性更强:
# 未安装tidyverse时先执行安装 # install.packages("tidyverse") library(dplyr) result_tidy <- df %>% mutate(NameOfField = case_when( Field1 == 1 & Field2 == "A" ~ Field3, TRUE ~ Field4 )) %>% select(Field1, NameOfField) # 查看结果 print(result_tidy)
两种方法最终都会得到预期输出:
| Field1 | NameOfField |
|---|---|
| 1 | Y |
| 2 | Y |
| 3 | N |
| 4 | Y |
内容的提问来源于stack exchange,提问作者paru80
相关产品推荐
相关产品推荐

