如何在R中基于指定列对data frame进行合并,保留各列非空有效值
你使用paste作为聚合函数时会把分组内所有值(包括空字符串"")拼接为一个字符串,无法自动过滤空值保留有效内容。由于空字符串的排序优先级低于所有非空字符串,直接把聚合函数换成max即可实现需求:
base R 方案
直接修改你原有的aggregate代码即可:
result <- aggregate(. ~ symbol, data = df, FUN = max)
dplyr 方案(可读性更强)
library(dplyr) result <- df %>% group_by(symbol) %>% summarise(across(everything(), ~ max(.))) # 显式过滤空值的版本,逻辑更清晰,适合后续扩展 result <- df %>% group_by(symbol) %>% summarise(across(everything(), ~ ifelse(all(. == ""), "", first(.[. != ""]))))
以上两种方案输出的结果均匹配你需要的目标表格格式。
内容的提问来源于stack exchange,提问作者minoo
相关产品推荐
相关产品推荐

