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

在R语言中将宽数据集转换为长数据集的实现问题

解决方案

你需要调整数据转换逻辑,先拆分列名得到指标类型与fID,再将指标转为宽格式列。以下是修正后的实现:

可复现数据集

set.seed(123)
dataset <- data.frame(ID = 1:10,
                      height_1 = rnorm(10,0,1),
                      height_2 = rnorm(10,0,1),
                      common_fam = rnorm(10,0,1),
                      weight_1 = rnorm(10,0,1),
                      weight_2 = rnorm(10,0,1),
                      common2_fam2 = rnorm(10,0,1))

修正后的数据转换代码

library(tidyr)
library(dplyr)

data3 <- dataset %>%
  # 拆分列名,同时提取指标类型(measure)和fID
  pivot_longer(-c(ID, ends_with("fam"), ends_with("fam2")),
               names_to = c("measure", "fID"),
               values_to = "value",
               names_sep = "_") %>%
  # 将指标类型转为独立的宽格式列(height、weight)
  pivot_wider(names_from = measure,
              values_from = value)

转换后的数据结构

最终data3包含你需要的所有列:

  • ID:原数据的ID列
  • common_fam、common2_fam2:原数据保留的公共列
  • fID:取值为1或2,对应原列名的后缀标识
  • height、weight:分别对应原数据中同指标不同fID的数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:02:40