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

如何按分组首个值填充数据框NA值?tidyr::fill可行吗?

解决方案

tidyr::fill() 没办法直接实现「用分组首个值填充NA」的需求,因为它的逻辑是沿指定方向填充相邻的前一个非NA值,而非固定取分组的第一个值。不过可以用 dplyr 结合 tidyr 的工具,在管道链里优雅实现:

方法一:replace_na() + first()

library(dplyr)
library(tidyr)

df %>%
  group_by(group) %>%
  mutate(val = replace_na(val, first(val))) %>%
  ungroup()

方法二:coalesce() + first()

也可以用 dplyr::coalesce(),它会返回第一个非NA值,对NA来说就是我们指定的分组首值:

df %>%
  group_by(group) %>%
  mutate(val = coalesce(val, first(val))) %>%
  ungroup()

结果验证

运行后得到的结果符合预期:

group val
1     A   1
2     A   2
3     A   1
4     A   1
5     B   4
6     B   3
7     B   4
8     B   4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:35:22