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

如何合并结构不同的宽格式与长格式面板DataFrame?

面板数据匹配填充解决方案

数据背景

现有两个R数据框:

df1 <- data.frame("region" = c("Acre", "Espyrito Santo", "Amapah", "Goiahs"),
                  "time1" = c(1, 4, 5, 7),
                  "time2" = c(7, 4, 2, 6),
                  "time3" = c(5, 2, 5, 0))
df2 <- data.frame("region" = c("ACRE", "ACRE", "ACRE", 
                               "ESPIRITO SANTO","ESPIRITO SANTO","ESPIRITO SANTO",
                               "AMAPA","AMAPA","AMAPA", 
                               "GOIAS","GOIAS","GOIAS"),
                  "date" = c("time1", "time2", "time3", 
                             "time1", "time2", "time3", 
                             "time1", "time2", "time3", 
                             "time1", "time2", "time3"))
  • df1为宽格式:region列存储地区,time1-time3列对应不同时段,值为谋杀数
  • df2为长格式:region列大小写与df1不一致,部分地区拼写也有差异;date列存储时段,需新增murder列,根据地区和时段匹配df1的数据填充

解决步骤

1. 统一地区名称格式

先修正大小写不一致和拼写差异问题,确保两地数据的地区标识完全匹配:

# 安装并加载tidyverse工具包(包含dplyr和tidyr)
install.packages("tidyverse")
library(tidyverse)

# 统一大小写为小写,同时修正拼写差异
df1 <- df1 %>%
  mutate(region = tolower(region)) %>%
  mutate(region = case_when(
    region == "amapah" ~ "amapa",
    region == "goiahs" ~ "goias",
    region == "espyrito santo" ~ "espirito santo",
    TRUE ~ region
  ))

df2 <- df2 %>%
  mutate(region = tolower(region))

2. 将df1转为长格式

把宽格式的df1转换为长格式,让结构和df2对齐,方便后续匹配:

df1_long <- df1 %>%
  pivot_longer(
    cols = starts_with("time"),  # 选择所有以time开头的列
    names_to = "date",           # 原列名转为date列
    values_to = "murder"         # 原列值转为murder列
  )

3. 合并数据填充murder列

使用left_join按region和date匹配,将df1的谋杀数填充到df2中:

df2_final <- df2 %>%
  left_join(df1_long, by = c("region", "date"))

查看最终结果

执行以下代码查看填充后的df2:

print(df2_final)

输出示例:

region  date murder
1           acre time1      1
2           acre time2      7
3           acre time3      5
4  espirito santo time1      4
5  espirito santo time2      4
6  espirito santo time3      2
7           amapa time1      5
8           amapa time2      2
9           amapa time3      5
10          goias time1      7
11          goias time2      6
12          goias time3      0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:27:57