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

R data.table按分组条件去重:保留非空答案及全空组空值行

R实现问卷数据按分组过滤空值的方案

方案1:data.table原生语法(推荐,匹配你的数据结构)

你的原始数据已经是data.table类,直接使用分组过滤逻辑即可:

library(data.table)
# 核心处理逻辑
result <- dt[, .SD[!(any(Answer != "") & Answer == "")], by = .(ID, Question)]
# 查看结果
result

逻辑说明:

  • 以ID+Question为分组单位,先判断当前组是否存在非空的有效答案
  • 如果组内有有效答案:过滤掉组内所有Answer == ""的空值行,所有非空有效答案全部保留
  • 如果组内所有Answer都是空值:不做过滤,保留组内全部行

方案2:tidyverse(dplyr)语法

如果你习惯使用tidyverse栈,可使用以下代码实现:

library(dplyr)
result <- dt %>%
  group_by(ID, Question) %>%
  filter(!(any(Answer != "") & Answer == "")) %>%
  ungroup()

运行上述任意一种方案,得到的结果都和你期望的输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:03