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

保留特定列(q4)为空的行,剔除其他列含空值的行(dplyr实现)

解决方案(基于dplyr管道)

先重现你的数据集(方便验证效果):

id <- c("001", "002", "003", "004", "005")
q1 <- c(1, 2, "", 3, 5)
q2 <- c("", 2, 3, 1, "")
q3 <- c(1, 3, 2, 5, 2)
q4 <- c(1, 2, 3, "", 4)
q5 <- c(1, 2, 3, 4, 3)
df <- data.frame(id, q1, q2, q3, q4, q5)
df[, 2:6] <- apply(df[, 2:6], 2, as.numeric)

接下来是完全符合需求的dplyr管道实现:

library(dplyr)

filtered_df <- df %>%
  # 第一步:筛选出q4列存在空值(NA)的行
  filter(is.na(q4)) %>%
  # 第二步:确保除id和q4外的所有列都没有空值
  filter(across(-c(id, q4), ~ !is.na(.x)))

代码细节解释:

  • 第一个filter(is.na(q4)):先锁定所有q4为空值的行,在你的示例里这一步会先筛选出参与者004的数据。
  • 第二个filter(across(...)):用across函数遍历除id和q4之外的所有问卷题目列,逐一检查这些列是否不存在空值。只有当所有这些列都满足无空值时,才会保留该行,完美剔除那些q4为空但其他列也有空值的无效数据。

运行这段代码后,filtered_df里就只会保留你需要的参与者004的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:41:29