首页 > 解决方案 > 如何通过 ID 用最大值填充缺失值

问题描述

我的 data.frame 看起来像这样:

我想填写High每个 ID 的最大值。我该怎么做?

在此处输入图像描述

我试过result<- unlist(lapply(split(df,df$ID), function(x) x$high= cummax(x$high)))了,它不起作用。我想知道你们如何处理它,如果可能的话,我做错了什么。非常感谢。可以使用构建示例数据

df<-structure(list(ID = c(1, 2, 3, 1, 2, 3, 1, 2, 3), High = c(25, 
36, 75, NA, NA, NA, NA, NA, NA), weight = c(38, 58, 36, 69, 58, 
35, 65, 24, 15), date = c(1, 1, 1, 3, 3, 3, 2, 2, 2)), row.names = c(NA, 
-9L), class = c("tbl_df", "tbl", "data.frame"))

标签: r

解决方案


我建议使用函数内部的mutate()集合,因为你有一些行。na.rm=Tmax()dfNA

library(dplyr)

df %>% 
   dplyr::group_by(ID) %>%
   dplyr::mutate(High = max(High, na.rm=T))

控制台输出:

#   ID  High weight  date
#  <dbl> <dbl>  <dbl> <dbl>
#1     1    25     38     1
#2     2    36     58     1
#3     3    75     36     1
#4     1    25     69     3
#5     2    36     58     3
#6     3    75     35     3
#7     1    25     65     2
#8     2    36     24     2
#9     3    75     15     2


推荐阅读