【发布时间】:2020-03-08 19:23:13
【问题描述】:
我想融合一个不包含任何 ID 列的 data.table。
dt <- data.table::data.table(iris)[1:10]
data.table::melt(dt, measure.vars=c('Petal.Length', 'Petal.Width'))
如果不指定 id.vars,所有非 measure.vars 列都被视为 id.vars。这可以在事后通过仅从熔体中选择变量/值来处理。
例如,下面的代码会产生我正在寻找的输出:
data.table::melt(dt, measure.vars=c('Petal.Length', 'Petal.Width'))[,.(variable, value)]
但我原以为它应该在melt call 本身中是可能的?我已经尝试了以下方法,但没有成功。
data.table::melt(dt, measure.vars=c('Petal.Length', 'Petal.Width'), id.vars=NULL)
data.table::melt(dt, measure.vars=c('Petal.Length', 'Petal.Width'), id.vars=c())
data.table::melt(dt, measure.vars=c('Petal.Length', 'Petal.Width'), id.vars=list())
来自文档:
如果 id.vars 和 measure.vars 都缺失,则所有 非数字/整数/逻辑列被分配为 id 变量和 其余的作为测量变量。如果只有 id.vars 或 measure.vars 之一 提供,其余列将分配给另一个。 id.vars 和 measure.vars 可以多次拥有同一列 并且同一列可以同时作为 id 和 measure 变量。
melt.data.table 还接受 id 和 measure 的列表列 变量。
【问题讨论】:
标签: r data.table melt