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

如何用R语言筛选含NA/空值但不含0的数据行

问题描述

现有如下DataFrame:

df1 = structure(list(item = c("HY04SB", "GSP8Y1", "8OK8N6", "V2RIP7", 
"51H9V8", "", "5C45YN", "PM271I", "4WVDD9"), weird = c("", "", 
"", "v1b+m#|1", "f%nfw+j<", "[3-qzg76", "13k{-ftr", "", "sywf|*l!"
), simple = c(14661746L, NA, 88171210L, NA, 0L, 35586016L, NA, 
0L, 23761616L), code = c("WX&}Awx:65Dgn9A3", "0", "7jcP!&EAJFT=4=Xv", 
"}7p92w~STX>2M5TP", "", "EvEH+hV=}6X,aS'Q", "", "r*C'U9LA\"tr$p_X;", 
"0")), class = "data.frame", row.names = c(NA, -9L))

数据预览:

item    weird   simple             code
1 HY04SB          14661746 WX&}Awx:65Dgn9A3
2 GSP8Y1                NA                0
3 8OK8N6          88171210 7jcP!&EAJFT=4=Xv
4 V2RIP7 v1b+m#|1       NA }7p92w~STX>2M5TP
5 51H9V8 f%nfw+j<        0                 
6        [3-qzg76 35586016 EvEH+hV=}6X,aS'Q
7 5C45YN 13k{-ftr       NA                 
8 PM271I                 0 r*C'U9LA"tr$p_X;
9 4WVDD9 sywf|*l! 23761616                0

需求为:筛选出**包含NA或空值,但行中不存在0(含数值型0和字符型"0")**的行,原使用的filter语句无法正常运行:

df1_na_empty_but_not_zero <- df1 %>% 
          filter(if_any(item: code %in% c(~ is.na(.), ~ !.x == "0", ~.x == "")))

期望输出:

item    weird   simple             code
1 HY04SB          14661746 WX&}Awx:65Dgn9A3
3 8OK8N6          88171210 7jcP!&EAJFT=4=Xv
4 V2RIP7 v1b+m#|1       NA }7p92w~STX>2M5TP
6        [3-qzg76 35586016 EvEH+hV=}6X,aS'Q
7 5C45YN 13k{-ftr       NA                 
修正后的代码
library(dplyr)

# 合并条件的写法
df1_na_empty_but_not_zero <- df1 %>%
  filter(
    # 确保整行没有0(数值0或字符"0")
    if_all(everything(), ~ !(.x == 0 | .x == "0")),
    # 确保整行至少有一个NA或空字符串
    if_any(everything(), ~ is.na(.) | .x == "")
  )
代码解释
  • if_all(everything(), ~ !(.x == 0 | .x == "0")):遍历所有列,排除任何包含数值0或字符"0"的行(对应原数据中的行2、5、8、9)。
  • if_any(everything(), ~ is.na(.) | .x == ""):遍历所有列,保留至少有一列是NA或空字符串的行(对应原数据中的行1、3、4、6、7)。

运行上述代码后,输出结果与期望完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:27:31