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

如何筛选DataFrame:保留含有效name和date的唯一ID并合并行

解决方案

方法一:使用dplyr包(tidyverse生态)

按id分组后,提取每组内非NA的name和date值,最后过滤掉仍存在NA的行:

library(dplyr)

df_processed <- df %>%
  group_by(id) %>%
  summarise(
    name = first(na.omit(name)),
    date = first(na.omit(date))
  ) %>%
  filter(!is.na(name) & !is.na(date))

方法二:使用基础R

无需额外安装包,通过aggregate提取有效值后合并数据框:

# 按id提取非NA的name和date
name_df <- aggregate(name ~ id, data = df, FUN = function(x) na.omit(x)[1])
date_df <- aggregate(date ~ id, data = df, FUN = function(x) na.omit(x)[1])

# 合并并过滤有效行
df_processed <- merge(name_df, date_df, by = "id")
df_processed <- df_processed[!is.na(df_processed$name) & !is.na(df_processed$date), ]

说明

两种方法都默认每个id仅对应一个有效的name和date值(与示例数据逻辑一致),最终结果会保留每个唯一id,且对应行的name和date均为有效值,与你给出的df_desired完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:45:36