【问题标题】:How can I easily and safely reshape my data in R?如何在 R 中轻松安全地重塑我的数据?
【发布时间】:2026-01-28 07:35:02
【问题描述】:

我经常使用“宽格式”的数据,其中同一变量有几列(请参阅here),我希望我的数据采用长格式(请参阅here)。你有什么简单安全的解决方案吗?

【问题讨论】:

  • “安全”是什么意思?

标签: r reshape


【解决方案1】:

或者用melt函数来反透视:

library(reshape2)
data <- read.table(text='"id","name1","name2","x1","x2","Mr a","Mr c","0.575710014459387","-0.991747242336918","Mr b","Mr d","-0.126033858727122","0.854792650572792"', sep=',', header=TRUE)
reshape(data, direction = 'long', idvar = 'id', varying = list(c('x1', 'x2'), c('name1', 'name2')), times=c('a', 'b'))
melt(data,c("id","name1","name2"),variable.name="x",value.name="value")

【讨论】:

    【解决方案2】:

    由于您的 2 个示例没有相同的数字,不知道这是否是您想要的:

    data <- read.table(text='"id","name1","name2","x1","x2"
    1,"Mr a","Mr c","0.575710014459387","-0.991747242336918"
    2,"Mr b","Mr d","-0.126033858727122","0.854792650572792"', sep=',', header=TRUE)
    
    reshape(data, direction = 'long', idvar = 'id', varying = list(c('x1', 'x2'), c('name1', 'name2')), times=c('a', 'b'))
    

    【讨论】: