При использовании 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
Последний дкаст показывает, что ошибки можно избежать, пропустив условие drop = FALSE, но мой желаемый результат -
vs 0 1 (all)
1 0 1 0 1
2 1 0 0 0
3 (all) 1 0 1
Любая помощь будет отличной!:)
Спасибо