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

如何按segments列相同内容合并分类变量行

解决方案

你可以用dplyr的分组汇总方法实现需求,因为每个segments分组下的每列最多只有一个非NA值,直接提取该非NA值即可:

library(dplyr)

# 你的原始数据
df <- tibble(segments=c('Hello','Hello', 'Hello', 'Block', 'Block', 'Hi', 'Hi', 'Hi'),
             year=c(2015, 2015,2015,2017, 2017, 2015,2015,2015),
             Colour=c('Yellow', NA,NA, 'Pink', NA, NA, 'Green', NA),
             Eval=c(NA, 'Yes',NA, NA, 'No', 'No', NA, NA),
             Ball=c(NA, NA, 'A', NA, NA, NA,NA, 'B'))

# 合并行
df1 <- df %>%
  group_by(segments) %>%
  summarise_all(~first(na.omit(.))) %>%
  ungroup()

运行后得到的结果与你预期一致:

# A tibble: 3 × 5
  segments  year Colour Eval  Ball 
  <chr>    <dbl> <chr>  <chr> <chr>
1 Hello     2015 Yellow Yes   A    
2 Block     2017 Pink   No    NA   
3 Hi        2015 Green  No    B   

补充说明

  • first(na.omit(.))的逻辑:对每个分组的每一列,先过滤掉所有NA,再取剩下的唯一非NA值;如果整列都是NA,就返回NA。
  • 也可以用coalesce函数实现同样效果,代码如下:
df1 <- df %>%
  group_by(segments) %>%
  summarise(across(everything(), ~coalesce(!!!.))) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:07:24