在melt
或data.table
中使用reshape2
后,我需要操纵variable
列的值,因此我需要它为{{1} } .class。如果由于某些格式错误的因素错误而失败。
我不明白这个问题是什么 - 也许是一个错误?
这是我数据的一小部分:
character
当我跑步时:
dput(eg.dat)
structure(list(qtr = structure(c(2004.75, 2005, 2005.25, 2005.5,
2005.75, 2006, 2006.25, 2006.5, 2006.75, 2007, 2007.25), class = "yearqtr"),
ACAIND1INR = c("99.5", "101.2333333333333", "105.4666666666667",
"108.9333333333333", "113.3", "124.8666666666667", "149.7333333333333",
"167.5333333333333", "170.5", "175.7", "189.6666666666667"
), ACAIND1INR = c("99.5", "101.4", "105.4", "108.9", "113",
"125.7", "149.5", "167.4", "170.5", "176.3", "189.4"), ACAIND2INR = c("99.2",
"101.2", "105.1", "108.5333333333333", "113.1", "125.3333333333333",
"150.5", "170.0666666666667", "171.4666666666667", "173.7333333333333",
"184.4333333333333"), ACAIND2INR = c("99.2", "101.6", "105.1",
"108.4", "112.9", "125.5", "149.4", "169.8", "171.5", "174.2",
"184.3")), .Names = c("qtr", "ACAIND1INR", "ACAIND1INR",
"ACAIND2INR", "ACAIND2INR"), class = c("data.table", "data.frame"
), row.names = c(NA, -11L), .internal.selfref = <pointer: 0x0000000000120788>)
qtr ACAIND1INR ACAIND1INR ACAIND2INR ACAIND2INR
1: 2004.75 99.5 99.5 99.2 99.2
2: 2005.00 101.2333333333333 101.4 101.2 101.6
3: 2005.25 105.4666666666667 105.4 105.1 105.1
4: 2005.50 108.9333333333333 108.9 108.5333333333333 108.4
5: 2005.75 113.3 113 113.1 112.9
6: 2006.00 124.8666666666667 125.7 125.3333333333333 125.5
7: 2006.25 149.7333333333333 149.5 150.5 149.4
8: 2006.50 167.5333333333333 167.4 170.0666666666667 169.8
9: 2006.75 170.5 170.5 171.4666666666667 171.5
10: 2007.00 175.7 176.3 173.7333333333333 174.2
11: 2007.25 189.6666666666667 189.4 184.4333333333333 184.3
我得到因素变量格式错误的错误,但我无法弄清楚这意味着什么或如何解决它:
melt(eg.dat, id.vars = 'qtr', variable.factor = FALSE)
我之前从未遇到过这种情况,但我无法找到此错误的文档。
答案 0 :(得分:3)
我认为这不是一个错误。数据帧和扩展名data.tables不应该有多个具有相同名称的列。如果列被命名为遵守该规则,则没有错误。我希望data.table
- print方法将字符值括在引号中,因为这些值(qtr除外)都是字符值。