2012-11-27 25 views
6

kullanarak yeniden uzun bir düzeye yeniden şekillendiriyorum lme4 ile birlikte gelen bir veri kümesiyle çalışıyorum ve yeniden uzunluğa dönüştürmek için reshape2'yi nasıl uygulayacağımı öğrenmeye çalışıyorum [tam kodun sonunda sonrası].Karmaşık bir veri kümesini recast()

library(lme4) 
data("VerbAgg") # load the dataset 

Veri kümesinin 9 değişkenleri vardır; 'Öfke', 'Cinsiyet' ve 'id', 'öğe' ile değişmez, 'resp', 'btype', 'situ', 'mode' ve 'r2' yapar.

başarıyla yeniden biçimlendirme() kullanarak geniş formata uzun verisetinin dönüştürmek mümkün olmuştur: 123 değişkene 316 gözlemlerini verir ve görünen

wide <- reshape(VerbAgg, timevar=c("item"), 
      idvar=c("id", 'Gender', 'Anger'), dir="wide") 

doğru dönüştürülmüş olması. Bununla birlikte, geniş veri alanını yeniden üretmek için reshape/reshape2'yi kullanmanın hiçbir yararı olmadı.

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 

ben yeniden şekillendirilmesi id değişkenleri tanımlar nasıl% 100 net olmayabilir, ama "Öfke" görmüyor neden çok karıştı. Benzer şekilde, yanlış yapılarımı görebilen var mı? Herkesin yanlış yaptıklarını görebilir miyim? Daha iyi bir eriyik/döküm anlayışına sahip olmak isterim!

Tam kodu:

## 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. 
+0

+1 çünkü ** aşk ** 26 değişkene erime/dökme – agstudy

+1

geniş verimlerle 316 gözlemleri anlama ?? loş (geniş) kontrol ettiğimde 316 satır ve 123 sütunum var. – agstudy

+4

mel t t t mel mel much much much much much much much much much much much much much much much much much much much much much much much much You You You You You You You You You You You You then then then then then then then then then then then then then then then then then then then then then â – hadley

cevap

3

Aşağıdaki kod istediğini yapar düşünüyorum.

library(lme4) 
data("VerbAgg") 

# Using base reshape() 
wide <- reshape(VerbAgg, timevar=c("item"), 
       idvar=c("id", 'Gender', 'Anger'), dir="wide") 
dim(wide) # 316 123 

# Using melt/cast 
require(reshape2) 
m1 <- melt(VerbAgg, id=c("id", "Gender", "Anger","item"), measure=c('resp','btype','situ','mode','r2')) 
wide4 <- dcast(m1,id+Gender+Anger~item+variable) 
dim(wide4) # 316 123 

R> wide[1:5,1:6] 
    Anger Gender id resp.S1WantCurse btype.S1WantCurse situ.S1WantCurse 
1 20  M 1    no    curse   other 
2 11  M 2    no    curse   other 
3 17  F 3   perhaps    curse   other 
4 21  F 4   perhaps    curse   other 
5 17  F 5   perhaps    curse   other 

R> wide4[1:5,1:6] 
    id Gender Anger S1WantCurse_resp S1WantCurse_btype S1WantCurse_situ 
1 1  M 20    no    curse   other 
2 2  M 11    no    curse   other 
3 3  F 17   perhaps    curse   other 
4 4  F 21   perhaps    curse   other 
5 5  F 17   perhaps    curse   other 
+0

Teşekkürler! Öğenin bir kimlik olarak dahil edilmiş olması gerektiğini fark etmedim. Bu harika görünüyor, teşekkürler! –

İlgili konular