我已经得到了我认为使用 reshape 包进行的相对良性的重塑。我有看起来像这样的“熔化”数据:
> head(meltDf)
CITY DATE variable value
1 Anqing 1953-01-01 DAILY_MAX_TEMP 9.1
2 Anqing 1953-01-02 DAILY_MAX_TEMP 5.1
3 Anqing 1953-01-03 DAILY_MAX_TEMP 5.2
4 Anqing 1953-01-04 DAILY_MAX_TEMP 4.6
5 Anqing 1953-01-05 DAILY_MAX_TEMP 7.9
6 Anqing 1953-01-06 DAILY_MAX_TEMP 9.9
> str(meltDf)
'data.frame': 100 obs. of 4 variables:
$ CITY : chr "Anqing" "Anqing" "Anqing" "Anqing" ...
$ DATE : POSIXlt, format: "1953-01-01" "1953-01-02" "1953-01-03" "1953-01-04" ...
$ variable: Factor w/ 1 level "DAILY_MAX_TEMP": 1 1 1 1 1 1 1 1 1 1 ...
$ value : num 9.1 5.1 5.2 4.6 7.9 9.9 8.1 13.3 17.6 17.6 ...
但是当我尝试 cast() 数据时,我得到了这个错误:
> castDf <- cast( meltDf , DATE + CITY ~ variable)
Error in dim(X) <- c(n, length(X)/n) :
dims [product 100] do not match the length of object [109]
这是一些完全重现问题的示例代码。为了保持问题简洁,我将数据放在了 github 上:
require(RCurl)
require(reshape)
myFile <- getURL("https://raw.github.com/gist/1010735/29ec65a48740ebe512f8af7a124e1e65e91ac054")
temporaryFile <- tempfile()
con <- file(temporaryFile, open = "w")
cat(myFile, file = con)
close(con)
meltDf <- dget(temporaryFile)
castDf <- cast( meltDf , DATE + CITY ~ variable)
任何想法是什么导致了错误?我认为这是一个非常简单的重塑。