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

在R中处理DataFrame:site列重复时合并lat/long非空值

R中合并重复site的非空值并保留唯一site

原始数据

现有如下R数据框:

sitelatlongsite_code
a1234a1
b2323b3
c3423c4
dnanana
ananana
cnanana

需求:保留唯一的site列表,合并重复site对应的非空lat、long和site_code,得到如下结果:

sitelatlongsite_code
a1234a1
b2323b3
c3423c4
dnanana

解决方案

使用dplyr包分组聚合,提取每个site对应的非空值:

# 先构造原始数据框(如果已有可跳过)
df <- data.frame(
  site = c("a", "b", "c", "d", "a", "c"),
  lat = c(12, 23, 34, NA, NA, NA),
  long = c(34, 23, 23, NA, NA, NA),
  site_code = c("a1", "b3", "c4", NA, NA, NA),
  stringsAsFactors = FALSE
)

# 安装并加载dplyr(未安装则先运行注释行)
# install.packages("dplyr")
library(dplyr)

# 分组处理数据
result_df <- df %>%
  group_by(site) %>%
  summarize(
    # 提取组内第一个非空值,全空则保留NA
    lat = first(na.omit(c(lat, NA))),
    long = first(na.omit(c(long, NA))),
    site_code = first(na.omit(c(site_code, NA))),
    .groups = "drop"
  )

# 查看结果
print(result_df)

逻辑说明:按site分组后,用na.omit过滤空值,再取第一个有效值;如果组内全为空,通过追加NA保证返回NA而非空值,最后取消分组状态得到目标数据框。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:01:19