2013-06-11 14 views
6

Ho un frame di dati, dicono libro paga, come:Perché visualizzo "Errore: lunghezza (righe) == 1 non è VERO" con ddply?

payroll <- read.table(text=" 
AgencyName   Rate    PayBasis  Status NumRate 
HousingAuthority $26,843.00 Annual   Full-Time 26843.00 
HousingAuthority $14,970.00 ProratedAnnual Part-Time 14970.00 
HousingAuthority $26,843.00 Annual   Full-Time 26843.00 
HousingAuthority $14,970.00 ProratedAnnual Part-Time 14970.00 
HousingAuthority $13.50   Hourly   Part-Time 13.50 
HousingAuthority $14,970.00 ProratedAnnual Part-Time 14970.00 
HousingAuthority $26,843.00 Annual   Full-Time 26843.00", header = TRUE) 

Il "NumRate" è in realtà numerica:

payroll$NumRate <- as.numeric(payroll$NumRate) 

e mi piacerebbe ottenere un conoscere il massimo, minimo e media stipendi da PayBasis. Mi aspetto che questo lavoro:

ddply(payroll, "PayBasis", summarize) 

Ma invece sto ottenendo un errore: Error: length(rows) == 1 is not TRUE

Che cosa mi manca qui?

risposta

3

Probabilmente perché hai sbagliato summarize per summary (che non funzionerà come previsto in questo contesto). Probabilmente voleva:

ddply(payroll, "PayBasis", summarize,mx = max(NumRate),mn = min(NumRate),avg = mean(NumRate)) 
     PayBasis  mx  mn  avg 
1   Annual 26843.0 26843.0 26843.0 
2   Hourly 13.5 13.5 13.5 
3 ProratedAnnual 14970.0 14970.0 14970.0 

ed essere sicuri di guardare con maggiore attenzione gli esempi in ?summarize e ?ddply.