You need to enable JavaScript to run this app. R语言tidyverse场景下如何对dbl类型temp列实现向下取整
优惠活动
大模型
产品
解决方案
定价
更多

R语言tidyverse场景下如何对dbl类型temp列实现向下取整

实现方案

对双精度浮点型的temp列做向下取整后再分组,直接使用R内置的floor()函数即可实现,根据是否需要保留原始temp值,有两种常用写法:

  • 写法1(最小代码改动):在分组环节直接对temp值取整,不修改原数据集的列,最终输出的列名与原有逻辑完全一致:
library(tidyverse)
library(nycflights13)

dep_delay_by_temp <- flights %>%
  inner_join(weather, by = c(
    "origin" = "origin",
    "year" = "year",
    "month" = "month",
    "day" = "day",
    "hour" = "hour"
  )) %>%
  group_by(temp = floor(temp)) %>%
  summarise(avg_delay = mean(dep_delay, na.rm = TRUE))
  • 写法2(直接修改temp列):如果不需要保留原始的浮点型temp值,可以在分组前用mutate把temp列的值替换为向下取整的结果:
dep_delay_by_temp <- flights %>%
  inner_join(weather, by = c(
    "origin" = "origin",
    "year" = "year",
    "month" = "month",
    "day" = "day",
    "hour" = "hour"
  )) %>%
  mutate(temp = floor(temp)) %>%
  group_by(temp) %>%
  summarise(avg_delay = mean(dep_delay, na.rm = TRUE))

补充说明:floor()的计算逻辑为返回不大于输入值的最大整数,完全匹配向下取整的需求。如果原数据的temp列存在缺失值,分组逻辑与原有代码完全一致,会自动将缺失值归为单独的NA组,不会改变原有平均延误的计算规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 09:36:07