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

如何拆分CHR类型列、透视气象数据后与LST数据表按日期合并?

问题根源

你当前的气象长表是按气象变量堆叠的长结构,同一日期对应7行数据(分别对应温度、风速等7个气象指标),直接和LST表按Date合并会导致LST每条数据重复7次,无法得到每个气象指标作为独立列的结果。

另外注意如果你的气象长表没有设置正确列名,需要先执行列名赋值:

colnames(weather_long) <- c("Weather_variable", "Date", "Value")

解决方案

方法1:tidyverse语法(推荐,适配你已经用到的pivot系列函数)

library(tidyverse)

# 把气象长表转为日期为行、每个气象变量为独立列的宽结构
weather_wide <- weather_long %>% 
  pivot_wider(names_from = Weather_variable, values_from = Value)

# 按日期左连接LST表,保留LST所有行
data_long <- LST_data %>% 
  left_join(weather_wide, by = "Date")

方法2:基础R语法

如果你偏好使用merge函数,可按如下步骤操作:

# 把气象长表转为宽格式
weather_wide <- reshape(weather_long, 
                        idvar = "Date", 
                        timevar = "Weather_variable", 
                        direction = "wide")
# 清理列名,去掉默认生成的前缀
colnames(weather_wide) <- gsub("Value\\.", "", colnames(weather_wide))

# 按日期合并两个表,all.x=TRUE代表保留LST所有行
data_long <- merge(LST_data, weather_wide, by = "Date", all.x = TRUE)

注意事项

  • 合并前请确认两个表的Date字段格式完全一致:比如日期字符串的分隔符、前导零(比如07/05/2010不要写成7/5/2010),避免因字符串不匹配导致关联不到值
  • 如果你是从原始气象宽表开始处理,可以直接从宽表转成上述需要的weather_wide结构,不需要先转成长表再转宽表,减少操作步骤:
    weather_wide <- weather_raw %>% 
      pivot_longer(cols = -`Weather variable`, names_to = "Date", values_to = "value") %>% 
      pivot_wider(names_from = `Weather variable`, values_from = value)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:54:07