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

如何使用dplyr的coalesce函数合并R数据框的多行数据?

用dplyr的coalesce合并多行数据框为一行

问题背景

有一个包含5行的R数据框,需要合并为一行并保留各列的非NA值。尝试coalesce(unlist(my_data[1:5,]))未成功,原因是coalesce()需要接收多个独立向量(对应每行数据)作为参数,而unlist()会将整个数据框转为单一向量,无法让函数识别各行结构。

可行实现方法

使用dplyr::summarise()结合across()和coalesce(),对每一列提取所有行的值,通过coalesce()保留第一个非NA值:

library(tidyverse)

# 执行合并操作
merged_data <- my_data %>%
  summarise(across(everything(), ~coalesce(!!!.)))

代码解释

  • across(everything(), ...):指定对数据框的所有列执行后续操作;
  • ~coalesce(!!!.):!!!.将当前列的所有行值拆分为独立参数传入coalesce(),函数会依次检查每行的该列值,返回第一个非NA值(若所有值均为NA则返回NA)。

验证结果

运行上述代码后,merged_data的结构与你提供的期望结果完全一致,可通过以下代码查看结构:

str(merged_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:37:39