Error al calcular valores mayores que 95% cuantil usando plyr
Mis datos están estructurados de la siguiente manera:
Individ <- data.frame(Participant = c("Bill", "Bill", "Bill", "Bill", "Bill", "Bill", "Bill", "Bill", "Bill", "Bill", "Bill", "Bill",
"Harry", "Harry", "Harry", "Harry","Harry", "Harry", "Harry", "Harry", "Paul", "Paul", "Paul", "Paul"),
Time = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4),
Condition = c("Placebo", "Placebo", "Placebo", "Placebo", "Expr", "Expr", "Expr", "Expr", "Expr", "Expr", "Expr", "Expr",
"Placebo", "Placebo", "Placebo", "Placebo", "Expr", "Expr", "Expr", "Expr", "Expr", "Expr", "Expr", "Expr"),
Power = c(400, 250, 180, 500, 300, 450, 600, 512, 300, 500, 450, 200, 402, 210, 130, 520, 310, 451, 608, 582, 390, 570, NA, NA))
Utilizandodplyr
Aplico un promedio móvil (de 2 a 4 segundos) a través del siguiente código:
for (summaryFunction in c("mean")) {
for ( i in seq(2, 4, by = 1)) {
tempColumn <- Individ %>%
group_by(Participant) %>%
transmute(rollapply(Power,
width = i,
FUN = summaryFunction,
align = "right",
fill = NA,
na.rm = T))
colnames(tempColumn)[2] <- paste("Rolling", summaryFunction, as.character(i), sep = ".")
Individ <- bind_cols(Individ, tempColumn[2])
}
}
Ahora deseo calcular el 5% superior dePower
para cadaParticipant
a través de cada uno de los promedios móviles. Para calcular esto, uso:
Output = ddply(Individ, .(Participant, Condition), summarise,
TwoSec <- Rolling.mean.2 > quantile(Rolling.mean.2 , 0.95, na.rm = TRUE))
Sin embargo, termino con una columna que diceTRUE
oFALSE
. En cambio, busco los valores reales que están en el 5% superior. ¿Cómo hago esto? ¿Existe también una manera más fácil de iterar sobre cada columna de media variable, por participante y condición, para encontrar el 5% superior en cada una?
¡Gracias!