如何使用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
相关产品推荐
相关产品推荐

