Создать sample_data:
norm_power <- rnorm(2298)
phoneme <- c("t", "v", "s", "p")
intensity <- c("loud", "soft")
unique_ID <- as.factor(rep(c("elec1", "elec2", "elec3", "elec4", "elec5", "elec6", "elec7",
"elec8", "elec9", "elec10"), length.out = 2298))
Subject <- as.factor(rep(c("DBS1", "DBS2", "DBS3", "DBS4"), length.out = 2298))
sample_data <- data.frame(norm_power, unique_ID, Subject, stringsAsFactors = FALSE)
sample_data$intensity[sample(1:nrow(sample_data), nrow(sample_data), FALSE)] <- rep(intensity, c(1149,1149))
sample_data$phoneme[sample(1:nrow(sample_data), nrow(sample_data), FALSE)] <- rep(phoneme, c(574, 574, 575, 575))
Я пытаюсь выполнить ANOVA и извлечь коэффициенты для нескольких подмножеств моих данных выборки - см. Выше. Когда я фильтрую набор данных по отдельным электродам (например, «elec1»), я могу получить результат (см. Вывод):
sample_data_elec1 <- filter(sample_data, unique_ID == "elec1")
output <-ezANOVA(dv = norm_power, within=.(phoneme, intensity), wid=Subject, data=sample_data_elec1)
Однако, когда я пытаюсь выполнить аналогичную операцию для нескольких подмножеств 'sample_data за раз, я просто создаю NA для всех операций. См. «Anova_data» ниже:
get_coefs <-function(d){
output <-ezANOVA(dv = norm_power, within=.(phoneme, intensity), wid=Subject, data=d)
tibble('phoneme_F' = output[["ANOVA"]][[4]][1], "phoneme_pval" = output[["ANOVA"]][[5]][1],
"intensity_F" = output[["ANOVA"]][[4]][2], "intensity_pval" = output[["ANOVA"]][[5]][2],
"interact_F" = output[["ANOVA"]][[4]][3], "interact_pval"= output[["ANOVA"]][[5]][3])
}
anova_data <- sample_data %>%
group_by(unique_ID) %>%
do({get_coefs(.)}) %>%
ungroup()
Заранее благодарим вас за вашу помощь - пожалуйста, дайте мне знать, если я могу уточнить еще !!