R语言中collapse包替代reshape2::melt的等效函数是什么?
使用collapse包实现数据框宽转长(替代reshape2::melt)
collapse包中提供了两种高效替代reshape2::melt()的函数:melt()(兼容data.table语法)和专门优化的qMelt(),两者都能生成ggplot2所需的长格式数据框,以下是具体用法对比:
基础示例数据
library(collapse) # 构造测试数据框 df <- data.frame( id = 1:3, var1 = c(10, 20, 30), var2 = c(15, 25, 35), var3 = c(20, 30, 40) )
核心用法对比
1. 保留ID列,将其余列转为长格式
- reshape2 写法:
reshape2::melt(df, id.vars = "id")
- collapse 写法(
melt()):
melt(df, id.vars = "id")
- collapse 高效写法(
qMelt(),无额外依赖,性能更优):
qMelt(df, id.vars = "id")
2. 指定要转换的目标列
- reshape2 写法:
reshape2::melt(df, id.vars = "id", measure.vars = c("var1", "var3"))
- collapse 写法:
melt(df, id.vars = "id", measure.vars = c("var1", "var3")) # qMelt 同样支持该参数 qMelt(df, id.vars = "id", measure.vars = c("var1", "var3"))
3. 自定义变量/值列的名称
- reshape2 写法:
reshape2::melt(df, id.vars = "id", variable.name = "category", value.name = "value")
- collapse 写法:
melt(df, id.vars = "id", variable.name = "category", value.name = "value") qMelt(df, id.vars = "id", variable.name = "category", value.name = "value")
额外说明
qMelt()是collapse针对数据框专门优化的轻量函数,无需依赖data.table,在处理大样本数据时性能远优于reshape2::melt(),输出结果为标准数据框,可直接传入ggplot2进行可视化。
内容的提问来源于stack exchange,提问作者Thomas Philips
相关产品推荐
相关产品推荐

