Я пытаюсь растопить фрейм данных из «широкого» формата в «длинный» формат в R, используя функцию «расплавить» в пакете «reshape2». Тем не менее, я сталкиваюсь с проблемой с размерами при попытке просмотра кадра выходных данных, которые у меня возникают при расшифровке. Вот пример:Измерение несоответствия с использованием расплава() в reshape2
# load reshape2 package
require(reshape2)
# sample data frame generated using dput
df <- structure(list(year = c(2001, 2002, 2003, 2004),
aet = structure(c(493.1, 407.1, 476.7, 501.6), .Dim = 4L),
drainage = structure(c(5.4, 5.4, 5.4, 5.4), .Dim = 4L),
srunoff = structure(c(25.6, 24.3, 56.0, 50.3), .Dim = 4L)),
.Names = c("year", "aet", "drainage", "srunoff"), row.names = c(NA, 4L), class = "data.frame")
# if i melt without specifying id.vars, it provides a warning but works works fine
df.melt <- melt(df)
# check output
head(df.melt)
# view output
View(df.melt)
# this works fine, and the data frame is visible in RStudio
# now, melt while supplying year as an id variable
df.melt.id <- melt(df, id.vars="year")
# check output
head(df.melt.id)
# the first 6 lines of output print to the console menu, as normal
# view output
View(df.melt.id)
Однако, когда я пытаюсь просмотреть df.melt.id кадр данных, я получаю следующее сообщение об ошибке:
Error in FUN(X[[i]], ...) :
dims [product 4] do not match the length of object [12]
4 соответствует исходной длине данных кадр и 12 - как долго это должно быть. Если я проверю размеры с помощью dim(df.melt.id)
, он вернет соответствующий размер: [1] 12 3
Любые идеи о том, что здесь происходит? Я попытался повторно установить reshape2 и это не помогло ...
Если посмотреть на 'ул (df.melt.id)', как-то столбец 'value' стал массивом. Если вы принуждаете его к числовому, это нормально, но поведение кажется довольно затруднительным. – alistaire
Это вещь 'reshape2'; 'reshape :: melt.data.frame' отлично работает. – alistaire
Странно! Да, использование 'reshape' отлично работает как на этом примере, так и на моем оригинальном, большем кадре данных. Спасибо за быструю помощь. –