2016-07-13 3 views
0

Я очень новый, работаю с R, но похоже, что следующий код должен работать. Почему я не получаю статистику, которая мне нужна? Благодарю.ddply: Почему это не работает?

> stats <- ddply(Y, "SECT", summarise, mean.EE = mean(EE), 
+          sd.EE = sd(EE), 
+          mean.AA = mean(AA), 
+          sd.AA = sd(AA), 
+          mean.II = mean(II), 
+          sd.II = sd(II)) 
> stats 
    SECT mean.EE sd.EE mean.AA sd.AA mean.II sd.II 
1 H1  NA NA  NA NA  NA NA 
2 H2  NA NA  NA NA  NA NA 
3 H3  NA NA  NA NA  NA NA 
> str(Y) 
'data.frame': 537 obs. of 5 variables: 
$ WORD: chr "a" "a" "a" "a" ... 
$ SECT: chr "H1" "H1" "H1" "H1" ... 
$ EE : num 2 2 2 2 2 ... 
$ AA : num 1.38 1.38 1.38 1.38 1.38 ... 
$ II : num 1 1 1 1 1 1 1 1 1 1 ... 

PS - Я знаю, это выглядит как каждый из переменных (EE, AA, II) не имеют никакого изменения, но это только потому, что они сортируются ...

+0

Попробуйте добавить 'na.rm = TRUE' к средним функциям. Если у вас есть какая-либо «NA» в переменной, она превращает все в «NA». – Jason

+0

Есть ли значения NA в «EE». Если это так, вы можете использовать 'na.rm = TRUE' – akrun

+0

Смущающе, это была проблема. Я решил это, используя ddply (na.omit (Y) ...). эффективнее na.rm = TRUE? –

ответ

0

Также попробуйте использовать dplyr

# install.packages('dplyr') 
library(dplyr) 

meanna <- function(x) mean(x, na.rm = T) 
sdna <- function(x) sd(x, na.rm = T) 

Y %>% 
    group_by(SECT) %>% 
    summarise_each(funs(meanna, sdna), -WORD)