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

在R中将多变量长格式数据转换为宽格式

R语言:长格式转宽格式实现双边变量拆分

需求说明

将长格式的data.table转换为宽格式,使每个原始变量生成如pta.1、pta.2、iso3n.1、iso3n.2的列,用于后续计算双边层面的平均值。

原始数据

structure(list(pta = c("636", "899", "989", "1007", "561"), cafta_similarity = c(0.81468368791454, 
0.68814557488039, 0.96371483934995, 0.71527668922595, 0.69435303348955
), iso3n = c(124, 124, 124, 124, 152), ccode = c(20, 20, 20, 
20, 155), country = c("Canada", "Canada", "Canada", "Canada", 
"Chile"), year = c("1992", "2016", "2018", "2018", "1960"), gdppc = c(20879.8483300891, 
42315.6037056806, 46548.6384108296, 46548.6384108296, 505.349325487754
), polity2 = c(10, 10, 10, 10, 5), openness = c(52.7380309449972, 
65.3636199818813, 66.5818530921921, 66.5818530921921, 46.9745037862152
), hog_right = c(3, 0, 0, 0, 3), hog_left = c(0L, 1L, 1L, 1L, 
0L), hog_center = c(0, 0, 0, 0, 0)), class = c("data.table", 
"data.frame"), row.names = c(NA, -5L), .internal.selfref = <pointer: 0x7fca56811ae0>)

解决方案

方法1:使用data.table原生函数(适配你的数据结构)

  1. 加载data.table包:
library(data.table)
  1. 为每个分组内的观测添加序号(这里以year为分组键,若你的双边数据有专属配对键,可替换为「配对键+year」):
# 按year分组,给每组内的行分配1、2...的序号
dt[, id := rowid(year)]
  1. 转换为宽格式:
# 将所有非year、id的变量按id拆分,生成带.1、.2后缀的列
wide_dt <- dcast(dt, year ~ id, value.var = setdiff(names(dt), c("year", "id")))

方法2:使用tidyverse工具链

  1. 加载tidyverse包:
library(tidyverse)
  1. 添加分组序号并转宽:
wide_dt <- dt %>%
  group_by(year) %>% # 可替换为你的双边配对键+year
  mutate(id = row_number()) %>%
  ungroup() %>%
  pivot_wider(names_from = id, values_from = -c(year, id))

后续双边平均值计算

转宽后可直接对对应列计算平均值,示例如下:

# 单个变量计算(如pta的双边均值)
wide_dt[, pta_mean := (as.numeric(pta.1) + as.numeric(pta.2)) / 2]

# 批量计算所有数值型变量的双边均值
num_cols <- grep("\\.[12]$", names(wide_dt), value = TRUE)
# 生成均值列名
mean_col_names <- gsub("\\.[12]$", "_mean", num_cols)
# 按变量前缀分组,批量计算行均值
wide_dt[, (mean_col_names) := lapply(
  split(num_cols, gsub("\\.[12]$", "", num_cols)),
  function(x) rowMeans(.SD, na.rm = TRUE)
), .SDcols = num_cols]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:20:36