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

R语言长格式数据框转宽表:生成id+变量名格式新列

实现方案

这里提供两种常用的可直接运行的实现方案:

方案1:tidyverse生态实现(代码可读性更高)

需要提前安装加载tidyverse套件:

library(tidyverse)

处理代码:

result <- df %>%
  group_by(id) %>%
  mutate(obs_id = row_number()) %>% # 标记每个个体内部的观测序号
  ungroup() %>%
  pivot_longer(cols = c(A,B,C), names_to = "var") %>% # 转换为长表结构
  unite(col = "new_col", id, var, sep = ".") %>% # 拼接成「个体编号.变量名」格式的列名
  pivot_wider(names_from = new_col, values_from = value) %>% # 转换为目标宽表结构
  select(-obs_id) %>% # 删除辅助用的观测序号列
  as.data.frame() # 可选:转为普通数据框格式,和示例输出完全对齐

方案2:纯Base R实现(无需安装额外依赖包)

# 按个体id拆分原始数据
df_split <- split(df, df$id)
# 遍历每个子表重命名列后按列合并
result <- do.call(cbind, lapply(names(df_split), function(id_val) {
  sub_df <- df_split[[id_val]]
  # 删除id列,保留A/B/C三个变量
  sub_df <- sub_df[, c("A", "B", "C")]
  # 按照要求重命名列
  colnames(sub_df) <- paste0(id_val, ".", colnames(sub_df))
  return(sub_df)
}))
# 重置行名(可选)
rownames(result) <- NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:57:01