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

在R语言中识别col1为NA与非NA配对的特定部分重复行

在R语言中识别特定的部分重复行

需求说明

需要筛选满足以下条件的行:

  • 同一组行中,一行col1为非NA,另一行col1为NA
  • 除col1和col2外,其余所有列的值完全一致

示例数据

df <- read.table(text = "
col1    col2    col3    col4    col5
a   928     0   TRUE    1
b   1028    0   FALSE   1
c   394     1   TRUE    1
NA  239     4   TRUE    0
NA  102     0   TRUE    1", header = TRUE)

解决方案

方法1:使用dplyr(适合常规数据量)

library(dplyr)

result <- df %>%
  # 按除col1、col2外的所有列分组
  group_by(across(-c(col1, col2))) %>%
  # 筛选分组内同时存在col1非NA和NA的行
  filter(sum(!is.na(col1)) > 0 & sum(is.na(col1)) > 0) %>%
  ungroup()

方法2:使用data.table(适合大数据量,效率更高)

library(data.table)

setDT(df)
# 按col3、col4、col5分组,筛选符合条件的分组行
result <- df[, if (sum(!is.na(col1)) > 0 & sum(is.na(col1)) > 0) .SD, by = .(col3, col4, col5)]

结果验证

运行上述代码后,result将输出符合条件的行:

#   col1 col2 col3  col4 col5
# 1    a  928    0  TRUE    1
# 2 <NA>  102    0  TRUE    1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:47:30