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

如何在R语言中使用dplyr包合并不同列的行数据并处理NA值

R数据框按站点合并行并填充字段解决方案

实现逻辑

按site字段分组后对物种列计算忽略NA的均值即可同时满足两个需求:

  • 若某列同一站点下仅一个非NA值,均值结果直接等于该值,等价于合并跨重复的NA行
  • 若某列同一站点下有两个非NA值,均值结果即为要求的平均值

方法1:使用dplyr包(语法简洁易读)

library(dplyr)

df.result <- df.dummy %>%
  group_by(site) %>%
  summarise(
    rep = first(rep), # 保留每组第一个重复编号,可根据实际需求调整取值规则
    sp.1 = mean(sp.1, na.rm = TRUE),
    sp.2 = mean(sp.2, na.rm = TRUE)
  ) %>%
  ungroup()

# 输出结果
print(df.result)

方法2:base R原生实现(无需加载第三方包)

# 计算物种列的分组均值
sp_stat <- aggregate(cbind(sp.1, sp.2) ~ site, df.dummy, FUN = \(x) mean(x, na.rm = TRUE))
# 提取分组的重复编号
rep_stat <- aggregate(rep ~ site, df.dummy, FUN = \(x) x[1])
# 合并两部分结果
df.result <- merge(rep_stat, sp_stat, by = "site")

# 输出结果
print(df.result)

运行上述代码后得到的结果和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:45:03