サブセット引数を指定してdcastを使用すると、元のデータフレームのdcastとサブセットデータフレームのdcastの行が一致しない場合、次のエラーが発生します。
data.frame(...、check.names = FALSE)のエラー:引数は行数が異なることを意味します:2、3
mtcarsデータセットでエラーを再現しました。以下は複製されたコードです。
library(reshape2)
# dataframe
mtcars2 <- mtcars[, c('vs','am','gear','carb')]
mtcars2$cars <- row.names(mtcars)
row.names(mtcars2) <- NULL
mtcars2$dummyvariable <- 1
mtcars2.melt <- melt(mtcars2, id=c('cars','vs','am','gear','carb'))
colnames(mtcars2.melt)
# [1] "cars" "vs" "am" "gear" "carb" "variable" "value"
dcast(mtcars2.melt, vs ~ am, drop=FALSE, margins=TRUE)
# Aggregation function missing: defaulting to length
# vs 0 1 (all)
# 1 0 12 6 18
# 2 1 7 7 14
# 3 (all) 19 13 32
cadillac <- subset(mtcars2.melt, regexpr('Cadillac',cars)>0)
dcast(cadillac, vs ~ am, drop=FALSE, margins=TRUE)
# Error in data.frame(..., check.names = FALSE) :
# arguments imply differing number of rows: 2, 3
dcast(cadillac, vs ~ am, margins=TRUE)
# vs 0 (all)
# 1 0 1 1
# 2 (all) 1 1
最後のdcastは、drop = FALSE条件をスキップすることでエラーを回避できることを示していますが、目的の出力は次のとおりです。
vs 0 1 (all)
1 0 1 0 1
2 1 0 0 0
3 (all) 1 0 1
どんな助けでも素晴らしいでしょう!:)
ありがとう