2

我正在尝试使用dcast(),但我无法弄清楚为什么会出现此错误:

“错误:在输入中找不到 value.var (mpg)”。Dcast 似乎找不到我在 melt 函数中制作的 measure.vars 的“mpg”。

你们能帮帮我吗?

这是我的代码:

data("mtcars")
install.packages("reshape")
library(reshape)  
install.packages("reshape2")
library(reshape2)

mdata <- melt(mtcars, id=c("gear","cyl"), measure.vars = c("mpg","hp"))
castData <- dcast(mdata, gear ~ cyl, value.var="mpg")
4

2 回答 2

0

我想知道您是否正在尝试重铸 mpg 的数据,正如 @akrun 和 @Lorenzo 已经提到的那样,它不是 mdata 中的字段。您将 mtcars 中的 hp 和 mpg 字段融合为一个名为 variable 的字段中的值。

此外,您对 dcast 的调用不完整 - 您应该指定要使用的聚合函数。作为使用 dcast 的示例,我已经调整了您的 dcast 语句,以显示 mdata 中熔化的变量字段中的 mpg 和 hp,并将平均值作为聚合:

castData <- dcast(mdata, gear + variable ~ cyl, value.var="value", fun.aggregate = mean)
> castData
  gear variable       4      6        8
1    3      mpg  21.500  19.75  15.0500
2    3       hp  97.000 107.50 194.1667
3    4      mpg  26.925  19.75      NaN
4    4       hp  76.000 116.50      NaN
5    5      mpg  28.200  19.70  15.4000
6    5       hp 102.000 175.00 299.5000

顺便说一句,您也不需要附加 reshape 库 - reshape2 就足够了。

于 2018-01-05T10:25:15.217 回答
0

如果您检查您创建的mdata对象

View(mdata)

您可以看到没有名为 的列mpg

您可以创建这样的列:

mdata <- dcast(mdata, gear + rowid(gear) ~ cyl, value.var="value")
于 2018-01-05T08:56:23.537 回答