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

如何在R中基于时间戳按列合并含同名列的两个DataFrame

在R语言中合并带城市标识的DataFrame

嗨,这个需求其实很容易实现,我给你分享两种常用的方法,都能完美得到你想要的结果:

方法一:使用dplyr包(推荐,代码更简洁直观)

首先我们先把你给出的示例数据构造出来,方便测试:

# 加载dplyr包
library(dplyr)

# 构造DENVER数据框
DENVER <- data.frame(
  Timestamp = c("01/01/2021 00:00", "01/01/2021 01:00", "01/01/2021 02:00"),
  Heating_energy = c(2,5,5),
  Lighting_Energy = c(6,5,1),
  Total_Energy = c(8,10,6),
  stringsAsFactors = FALSE
)

# 构造CHICAGO数据框
CHICAGO <- data.frame(
  Timestamp = c("01/01/2021 00:00", "01/01/2021 01:00", "01/01/2021 02:00"),
  Heating_energy = c(1,6,2),
  Lighting_Energy = c(1,1,6),
  Total_Energy = c(2,7,8),
  stringsAsFactors = FALSE
)

接下来我们先合并两个数据框,再给非Timestamp的列加上城市后缀:

# 合并数据并添加城市标识
merged_df <- DENVER %>%
  inner_join(CHICAGO, by = "Timestamp", suffix = c("_DENVER", "_CHICAGO"))

# 查看结果
print(merged_df)

这里的suffix参数会自动给来自两个数据框的同名列(除了用于关联的Timestamp)加上指定的后缀,正好符合你的需求!

方法二:使用Base R(无需额外加载包)

如果你不想加载第三方包,用Base R的merge函数也能实现:

# 合并数据框
merged_df_base <- merge(DENVER, CHICAGO, by = "Timestamp")

# 重命名列,添加城市标识
colnames(merged_df_base) <- c(
  "Timestamp",
  "Heating_energy_DENVER", "Lighting_Energy_DENVER", "Total_Energy_DENVER",
  "Heating_energy_CHICAGO", "Lighting_Energy_CHICAGO", "Total_Energy_CHICAGO"
)

# 查看结果
print(merged_df_base)

这种方法需要手动指定所有新列名,适合列数不多的情况。

两种方法运行后都会得到你想要的输出格式:

Timestamp Heating_energy_DENVER Lighting_Energy_DENVER Total_Energy_DENVER Heating_energy_CHICAGO Lighting_Energy_CHICAGO Total_Energy_CHICAGO
1 01/01/2021 00:00 2 6 8 1 1 2
2 01/01/2021 01:00 5 5 10 6 1 7
3 01/01/2021 02:00 5 1 6 2 6 8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:52:49