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

R语言中实现两个表格的聚合与重组问题求助

问题:合并并重塑R语言中的两个数据框

原始数据

Table 1

Test    Comp.Name
A Test  Comp.1
B Test  Comp.1
B Test  Comp.2
C Test  Comp.2
A Test  Comp.3
B Test  Comp.4

对应的R定义代码:

table1 <- data.frame("Test" = c("A Test", "B Test", "B Test", "C Test", "A Test", "B Test"),
                     "Comp Name" = c("Comp.1", "Comp.1", "Comp.2", "Comp.2", "Comp.3", "Comp.4"))

Table 2

Test.Name   Comp.1  Comp.2  Comp.3  Comp.4
A Test      5       6       7       8
B Test      10      15      20      25
C Test      2       8       3       212

对应的R定义代码:

table2 <- data.frame("Test Name" = c("A Test", "B Test", "C Test"),
                     "Comp.1" = c(5, 10, 2),
                     "Comp.2" = c(6, 15, 8),
                     "Comp.3" = c(7, 20, 3),
                     "Comp.4" = c(8, 25, 212))

目标结果

Test    Comp.Name   Test.Price
A Test  Comp.1      5
B Test  Comp.1      10
B Test  Comp.2      15
C Test  Comp.2      8
A Test  Comp.3      7
B Test  Comp.4      25

对应的目标数据框代码:

table3 <- data.frame("Test" = c("A Test", "B Test", "B Test", "C Test", "A Test", "B Test"),
                     "Comp Name" = c("Comp.1", "Comp.1", "Comp.2", "Comp.2", "Comp.3", "Comp.4"),
                     "Test Price" = c(5,10,15,8,7,25))

尝试的代码

table3 <- inner_join(table1, table2, by.x = "Test", by.y="Test Name") %>%
  select("Test Name", "Comp Name", "Test Price" = "Comp Name")

解决方案

问题核心是table2是宽格式,无法直接和长格式的table1匹配,需要先将table2转为长格式,再进行连接:

library(dplyr)
library(tidyr)

# 把table2转为长格式,将各公司列转为行
table2_long <- table2 %>%
  pivot_longer(cols = starts_with("Comp."), 
               names_to = "Comp Name", 
               values_to = "Test Price")

# 按Test和Comp Name两个字段内连接,得到目标结果
table3 <- inner_join(table1, table2_long, 
                     by = c("Test" = "Test Name", "Comp Name" = "Comp Name"))

代码说明

  1. pivot_longer将table2中所有以Comp.开头的列(即各公司价格列)转换为两行:Comp Name存储公司名,Test Price存储对应价格,让table2的结构与table1对齐。
  2. inner_join通过Test和Comp Name两个匹配条件,将两个数据框合并,直接得到目标格式的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:07:58