Pracuję z zestawem danych dołączonym do lme4 i staram się nauczyć, jak zastosować poprawkę 2, aby przekształcić go z długiego na szeroki [pełny kod na końcu stanowisko].Przekształcanie złożonego zestawu danych z długiego na szeroki przy użyciu przekształcania()
library(lme4)
data("VerbAgg") # load the dataset
Zestaw danych zawiera 9 zmiennych; "Wściekłość", "Płeć" i "id" nie różnią się w zależności od "pozycji", natomiast "resp", "btype", "situ", "tryb" i "r2" do.
ja z powodzeniem udało się przekształcić zestaw danych z długo formacie szerokim użyciu Reshape():
wide <- reshape(VerbAgg, timevar=c("item"),
idvar=c("id", 'Gender', 'Anger'), dir="wide")
co daje 316 obserwacje na 123 zmiennych, i wydaje się być poprawnie przekształcony. Jednak nie udało mi się użyć funkcji reshape/reshape2 do odtworzenia szerokiej ramki danych.
wide2 <- recast(VerbAgg, id + Gender + Anger ~ item + variable)
Using Gender, item, resp, id, btype, situ, mode, r2 as id variables
Error: Casting formula contains variables not found in molten data: Anger
I nie może być w 100% jasne, w jaki definiuje przekształcenie zmiennych ID, ale jestem bardzo mylić, dlaczego nie widzi „gniew”. Podobnie, jeśli ktoś może zobaczyć, co robię źle, może to być
Chciałbym uzyskać lepsze zrozumienie topienia/odlewania!
Pełny kod:
## load the lme4 package
library(lme4)
data("VerbAgg")
head(VerbAgg)
names(VerbAgg)
# Using base reshape()
wide <- reshape(VerbAgg, timevar=c("item"),
idvar=c("id", 'Gender', 'Anger'), dir="wide")
# Using recast
library(reshape2)
wide2 <- recast(VerbAgg, id + Gender + Anger ~ item + variable)
wide3 <- recast(VerbAgg, id + Gender + Anger ~ item + variable,
id.var = c("id", "Gender", "Anger"))
# Using melt/cast
m <- melt(VerbAgg, id=c("id", "Gender", "Anger"))
wide <- o cast(m,id+Gender+Anger~...)
Aggregation requires fun.aggregate: length used as default
# Yields a list object with a length of 8?
m <- melt(VerbAgg, id=c("id", "Gender", "Anger"), measure.vars = c(4,6,7,8,9))
wide <- dcast(m, id ~ variable)
# Yields a data frame object with 6 variables.
+1, ponieważ ** miłość ** rozumie topienie/odlewanie – agstudy
szerokie plony 316 obserwacji na 26 zmiennych? kiedy sprawdzam dim (szeroki), mam 316 wierszy i 123 kolumny. – agstudy
Znacznie lepiej będzie "topić się", a potem "rzucać" - wtedy łatwiej będzie zobaczyć, co się dzieje. – hadley