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

如何用R计算修正温度:站点日均温与逐时温度差值

用R实现气象数据的温度校正计算

需求:针对9个月的气象数据,按站点和日期,将df1中的逐时气温(Temperature)与df2中对应站点当日的日均温(AverageTemperaturePerDayAndStation)做关联,生成如df3所示的CorrectedTemperature列。

数据示例

df1(逐时气温数据)

Station     Date                Temperature
0  Station1    2022-05-1 9:30:00   7,4
1  Station1    2022-05-1 9:45:00   7,45
2  Station1    2022-05-1 10:00:00  8,2
3  Station1    2022-05-1 10:15:00  8,4
4  Station1    2022-05-1 10:30:00  8,9
5  Station1    2022-05-1 9:30:00   7,5
6  Station2    2022-05-1 9:45:00   7,56
7  Station2    2022-05-1 10:00:00  8,4
8  Station2    2022-05-1 10:15:00  8,7
9  Station2    2022-05-1 10:30:00  8,1
10 ...

df2(站点日均温数据)

Station     Date        AverageTemperaturePerDayAndStation
0  Station1    2022-05-1   8
1  Station1    2022-05-2   8,3
2  Station1    2022-05-3   8,6
3  Station1    2022-05-4   8,4
4  Station1    2022-05-5   7,9
5  Station2    2022-05-1   6
6  Station2    2022-05-2   7,3
7  Station2    2022-05-3   8,6
8  Station2    2022-05-4   7,4
9  Station2    2022-05-5   6,9
10 ...

期望输出df3

Station     Date                CorrectedTemperature 
0  Station1    2022-05-1 9:30:00   7,4  - 8
1  Station1    2022-05-1 9:45:00   7,45 - 8
2  Station1    2022-05-1 10:00:00  8,2  - 8
3  Station1    2022-05-1 10:15:00  8,4  - 8
4  Station1    2022-05-1 10:30:00  8,9  - 8
5  Station1    2022-05-1 9:30:00   7,5  - 8
6  Station2    2022-05-1 9:45:00   7,56 - 6
7  Station2    2022-05-1 10:00:00  8,4  - 6
8  Station2    2022-05-1 10:15:00  8,7  - 6
9  Station2    2022-05-1 10:30:00  8,1  - 6
10 ...

R实现代码

# 加载工具包
library(dplyr)
library(lubridate)

# 处理df1:提取纯日期字段,保留原始气温字符串
df1_processed <- df1 %>%
  mutate(
    Date_only = as.Date(Date),
    Temp_raw = Temperature
  )

# 处理df2:统一日期格式,保留原始日均温字符串
df2_processed <- df2 %>%
  mutate(
    Date = as.Date(Date),
    Avg_temp_raw = AverageTemperaturePerDayAndStation
  )

# 按站点和日期合并两个数据集
df_merged <- left_join(df1_processed, df2_processed, 
                       by = c("Station", "Date_only" = "Date"))

# 生成符合示例格式的CorrectedTemperature列
df3 <- df_merged %>%
  mutate(CorrectedTemperature = paste(Temp_raw, "-", Avg_temp_raw)) %>%
  select(Station, Date, CorrectedTemperature)

# 查看结果
head(df3)

如果需要计算实际差值(而非显示表达式),可使用以下代码:

# 处理df1:转换气温为数值型
df1_processed <- df1 %>%
  mutate(
    Date_only = as.Date(Date),
    Temp_num = as.numeric(gsub(",", ".", Temperature))
  )

# 处理df2:转换日均温为数值型
df2_processed <- df2 %>%
  mutate(
    Date = as.Date(Date),
    Avg_temp_num = as.numeric(gsub(",", ".", AverageTemperaturePerDayAndStation))
  )

# 合并并计算差值
df_merged <- left_join(df1_processed, df2_processed, 
                       by = c("Station", "Date_only" = "Date"))

df3 <- df_merged %>%
  mutate(CorrectedTemperature = Temp_num - Avg_temp_num) %>%
  select(Station, Date, CorrectedTemperature)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:46:02