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

R语言:提取数据框中ID2为NA的唯一行

解决ID2为NA的唯一行提取问题

嘿,我明白你的困扰了!你用subset命令只筛选出了所有ID2为NA的行,但里面包含重复的ID1记录,所以才返回了4行。要拿到ID1唯一的那两行,只需要在筛选后加一步去重操作就行,下面给你两种可行的方案:

方案1:用tidyverse工具链(直观易读)

如果你习惯用dplyr包的话,这个方法很清晰:
首先先构造一个和你数据类似的示例(方便你对应):

# 模拟你的数据框:ID2全为NA,ID1有重复
df <- data.frame(
  ID1 = c(1, 2, 3, 3, 4, 4),
  ID2 = c(NA, NA, NA, NA, NA, NA),
  OtherCol = c("a", "b", "c", "c", "d", "d")
)

然后执行筛选+去重:

library(dplyr)

target_df <- df %>%
  filter(is.na(ID2)) %>%  # 筛选ID2为NA的行
  distinct(ID1, .keep_all = TRUE)  # 按ID1去重,保留所有列

这里的.keep_all = TRUE很关键,它会让你保留数据框的所有列,而不只是ID1列。

方案2:基础R实现(无需额外安装包)

如果你不想用第三方包,用基础R的函数也能搞定:

# 先筛选ID2为NA的行
na_subset <- subset(df, is.na(ID2))
# 去掉ID1重复的行,只保留每个ID1第一次出现的记录
target_df <- na_subset[!duplicated(na_subset$ID1), ]

duplicated()函数会标记出重复的行,取反(!)就能保留唯一的那些行。

这样处理后,你就能得到ID1为3和4的唯一两行数据框啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:12:37