错误:未找到度量变量(data.table :: melt)

时间:2018-03-23 15:48:03

标签: r data.table melt

我遵循此处的文档:https://cran.r-project.org/web/packages/data.table/vignettes/datatable-reshape.html以使用更新的功能(在3.增强(新)功能下),允许同时熔化多个列。我跟着这个例子,这对我来说似乎很简单,并且收到以下错误:

  

错误:测量数据中找不到的变量:c(" p1"," p2"," p3"," p4", " p5"),c(" change1"," change2"," change3"," change4"),c (" r1"," r2"," r3"," r4"," r5"),c(& #34; t1"," t2"," t3"," t4"," t5"),c(&#34 ; 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"))

当我运行名字(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")

老实说,我不确定会出现什么问题。它是如此简单的代码,似乎没有任何问题可以解决它。我想知道它们是否具有不同的级别或类型,但是对于级别我尝试只熔化那些具有相同数量但没有效果的级别和类型,这在文档中被解决为非问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

要使用这些增强功能,即使直接调用setDT,也需要传递data.table,否则会重定向到data.table::melt(setDT(inventory_final), id = "id", measure = list(colA, colB, colC, colD, colE), value.name = c("PriceNum", "PercentChange", "RentedDate", "TermDate", "IdleDays"))

所以OP通过添加c >> 1来解决它:

unsigned char c = 0xAA;
unsigned char b = !c;