Error: measure variables not found (data.table::melt)
Error: measure variables not found (data.table::melt)
我正在关注此处的文档:https://cran.r-project.org/web/packages/data.table/vignettes/datatable-reshape.html 使用更新的功能(在 3. 增强的(新)功能下),它允许同时熔化多个列。我遵循了这个例子,这对我来说似乎很简单,但出现以下错误:
Error: measure variables not found in data: c("p1", "p2", "p3", "p4", "p5"), c("change1", "change2", "change3", "change4"), c("r1", "r2", "r3", "r4", "r5"), c("t1", "t2", "t3", "t4", "t5"), c("idle_days1", "idle_days2", "idle_days3", "idle_days4")
这是我正在尝试的代码:
colA = paste("p", 1:5, sep = "")
colB = paste("change", 1:4, sep = "")
colC = paste("r", 1:5, sep = "")
colD = paste("t", 1:5, sep = "")
colE = paste("idle_days", 1:4, sep = "")
data <- data.table::melt(inventory_final, measure = list(colA, colB, colC,
colD, colE), value.name = c("PriceNum", "PercentChange", "RentedDate",
"TermDate", "IdleDays"))
当我 运行 names(inventory_final) 他们肯定在那里(和其他人一起):
p1 p2 p3 p4 p5 change1 change2 change3 change4 r1 r2 r3 r4 r5 t1 t2 t3 t4 t5 idle_days1 idle_days2 idle_days3 idle_days4
令我感到奇怪的是,如果我一次 运行 它们一个,每个都成功执行并产生我所期望的结果:(所以数据中未找到的变量似乎不是真正的问题)。
dt <- melt(inventory_final, measure = colA, value.name = "Price")
dt <- melt(inventory_final, measure = colB, value.name = "PercentChange")
dt <- melt(inventory_final, measure = colC, value.name = "RentedDate")
dt <- melt(inventory_final, measure = colD, value.name = "TermDate")
dt <- melt(inventory_final, measure = colE, value.name = "IdleDays")
老实说,我不确定哪里出了问题。这是一段如此简单的代码,似乎没有问题可以解决它。我想知道它们是否属于不同的级别或类型,但对于级别,我尝试只融化那些具有相同数量的级别,但没有效果,对于类型,这在文档中被视为非问题。非常感谢任何帮助。
要使用这些增强功能,即使直接调用 data.table::melt
,您也需要传递 data.table,否则它将重定向到 reshape2::melt
。
所以 OP 通过添加 setDT
:
解决了这个问题
data.table::melt(setDT(inventory_final),
id = "id",
measure = list(colA, colB, colC, colD, colE),
value.name = c("PriceNum", "PercentChange", "RentedDate", "TermDate", "IdleDays"))
我正在关注此处的文档:https://cran.r-project.org/web/packages/data.table/vignettes/datatable-reshape.html 使用更新的功能(在 3. 增强的(新)功能下),它允许同时熔化多个列。我遵循了这个例子,这对我来说似乎很简单,但出现以下错误:
Error: measure variables not found in data: c("p1", "p2", "p3", "p4", "p5"), c("change1", "change2", "change3", "change4"), c("r1", "r2", "r3", "r4", "r5"), c("t1", "t2", "t3", "t4", "t5"), c("idle_days1", "idle_days2", "idle_days3", "idle_days4")
这是我正在尝试的代码:
colA = paste("p", 1:5, sep = "")
colB = paste("change", 1:4, sep = "")
colC = paste("r", 1:5, sep = "")
colD = paste("t", 1:5, sep = "")
colE = paste("idle_days", 1:4, sep = "")
data <- data.table::melt(inventory_final, measure = list(colA, colB, colC,
colD, colE), value.name = c("PriceNum", "PercentChange", "RentedDate",
"TermDate", "IdleDays"))
当我 运行 names(inventory_final) 他们肯定在那里(和其他人一起):
p1 p2 p3 p4 p5 change1 change2 change3 change4 r1 r2 r3 r4 r5 t1 t2 t3 t4 t5 idle_days1 idle_days2 idle_days3 idle_days4
令我感到奇怪的是,如果我一次 运行 它们一个,每个都成功执行并产生我所期望的结果:(所以数据中未找到的变量似乎不是真正的问题)。
dt <- melt(inventory_final, measure = colA, value.name = "Price")
dt <- melt(inventory_final, measure = colB, value.name = "PercentChange")
dt <- melt(inventory_final, measure = colC, value.name = "RentedDate")
dt <- melt(inventory_final, measure = colD, value.name = "TermDate")
dt <- melt(inventory_final, measure = colE, value.name = "IdleDays")
老实说,我不确定哪里出了问题。这是一段如此简单的代码,似乎没有问题可以解决它。我想知道它们是否属于不同的级别或类型,但对于级别,我尝试只融化那些具有相同数量的级别,但没有效果,对于类型,这在文档中被视为非问题。非常感谢任何帮助。
要使用这些增强功能,即使直接调用 data.table::melt
,您也需要传递 data.table,否则它将重定向到 reshape2::melt
。
所以 OP 通过添加 setDT
:
data.table::melt(setDT(inventory_final),
id = "id",
measure = list(colA, colB, colC, colD, colE),
value.name = c("PriceNum", "PercentChange", "RentedDate", "TermDate", "IdleDays"))