You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R数据集中忽略NA生成符合指定规则的Global逻辑列

解决方案

你可以用case_when结合if_any和if_all一步实现所有规则,完整代码如下:

library(dplyr)

df <- data.frame(A = c(T, NA, NA, NA),
                 B = c(NA, F, NA, NA), 
                 C = c(F, NA, T, NA))

df <- df %>%
  mutate(Global = case_when(
    # 规则3:所有列均为NA时返回NA
    if_all(c(A,B,C), is.na) ~ NA,
    # 规则1:任意列值为TRUE时返回TRUE(自动忽略NA)
    if_any(c(A,B,C), ~ .x) ~ TRUE,
    # 规则2:其余情况(所有列是FALSE或NA,但不全为NA)返回FALSE
    TRUE ~ FALSE
  ))

代码说明

  • if_all(c(A,B,C), is.na):判断当前行的A、B、C列是否全为NA,匹配规则3的场景;
  • if_any(c(A,B,C), ~ .x):检查当前行是否存在任意一列值为TRUE,逻辑型判断会自动忽略NA,匹配规则1的场景;
  • 最后的TRUE ~ FALSE:覆盖剩余所有场景——也就是行内没有TRUE,但至少存在一个FALSE(其余为NA),匹配规则2的场景。

运行后得到的结果与预期完全一致:

ABCGlobal
TRUENAFALSETRUE
NAFALSENAFALSE
NANATRUETRUE
NANANANA

内容的提问来源于stack exchange,提问作者LenaB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:30:57