在R语言中为DataFrame添加基于列值条件的Result列
在R中为DataFrame添加条件判断列
你有这样一个DataFrame:
df <- structure(list(ID = c("A142867.12", "F134242.15", "H136244.11", "Y184937.13"), Name = c("BB", "PP", "II", "WW"), qusa = c(10.0341, 12.7213, 0.157605, 0), nhg = c(24.7632, 50.562, 0.247947, 0.164736 ), opk = c(26.931, 5.9474, 0.79539, 0)), class = "data.frame", row.names = c(NA, -4L))
需要在末尾添加Result列,规则是:当该行的qusa、nhg、opk三个值全部大于等于1.2时标记为"Pass",否则标记为"-"。
方法1:使用Base R实现
可以利用rowSums快速判断每行是否满足所有条件,结合ifelse生成结果列:
# 计算每行中满足 ≥1.2 的列数,等于3则说明三个列全部符合要求 df$Result <- ifelse(rowSums(df[, c("qusa", "nhg", "opk")] >= 1.2) == 3, "Pass", "-")
方法2:使用dplyr包(tidyverse风格更直观)
如果你习惯用tidyverse工具链,dplyr的mutate配合if_all会让逻辑更清晰:
library(dplyr) df <- df %>% mutate(Result = if_all(c(qusa, nhg, opk), ~ .x >= 1.2) %>% ifelse(., "Pass", "-"))
验证结果
运行上述任意一段代码后,你的DataFrame会和预期一致:
> df ID Name qusa nhg opk Result 1 A142867.12 BB 10.03410 24.76320 26.9310 Pass 2 F134242.15 PP 12.72130 50.56200 5.9474 Pass 3 H136244.11 II 0.15760 0.24795 0.7954 - 4 Y184937.13 WW 0.00000 0.16474 0.0000 -
内容的提问来源于stack exchange,提问作者ZenMac
相关产品推荐
相关产品推荐

