r - 如何通过 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"))
解决方案
我建议使用函数内部的mutate()
集合,因为你有一些行。na.rm=T
max()
df
NA
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
推荐阅读
- google-chrome - Chrome 开发工具 - 性能选项卡缺少 JS 跟踪
- r - 使用每月数据框的数量填充每周数据框
- google-data-studio - 请求可视化的配置资源时出错
- jquery - 使用正则表达式检查文本框中是否存在任何链接
- c++ - 8 谜题:按成员变量对包含指向对象的指针的 STL Heap/Priorirty Queue 进行排序
- flutter - 常量创建的参数必须是 Flutter 上的常量表达式
- laravel - 由于特殊字符,Laravel Post 方法不起作用
- c# - DataGrid 项目无法识别 DataTemplate
- c# - 如何使用 MVC 自定义页面错误管理处理 angularjs HTTP 错误?
- javascript - 所有反应烤面包消息都需要单个块,反应烤面包失败或成功