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

在R中实现DataFrame行去重与列对齐的方法求助

合并DataFrame中重复Sample行的非NA值

输入数据

SampleVar1Var2
A1NA
BNA1
ANA3
CNA2
C5NA
B4NA

期望输出

SampleVar1Var2
A13
B41
C52

解决方案(R tidyverse)

你可以用dplyr的分组聚合实现,核心是对每个Sample组提取各列的非NA有效值:

library(dplyr)

# 假设你的数据框名为df
df_cleaned <- df %>%
  group_by(Sample) %>%
  summarise(
    Var1 = max(Var1, na.rm = TRUE),
    Var2 = max(Var2, na.rm = TRUE)
  )

如果变量是字符串类型,用first(na.omit(Var1))替代max更稳妥:

df_cleaned <- df %>%
  group_by(Sample) %>%
  summarise(
    Var1 = first(na.omit(Var1)),
    Var2 = first(na.omit(Var2))
  )

多列场景下用across简化代码:

df_cleaned <- df %>%
  group_by(Sample) %>%
  summarise(across(everything(), ~ first(na.omit(.))))

为什么之前的group_by失败?

大概率是仅完成分组但未配合正确的聚合逻辑——你需要对每一列指定处理NA值的规则,提取唯一有效值,而非仅分组后无后续操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:05:52