# 📦 패키지 설치 및 로드
install.packages("tidyverse")
install.packages("writexl")
library(tidyverse)
library(writexl)
# ✅ 데이터 준비
data1$condition <- factor(data1$condition, levels = c(1, 2, 3), labels = c("Flat", "Cup", "Count"))
# ✅ 보행 변수 정의
gait_vars <- c(
"loadingresponsetime", "loadingresponsegc", "midstancetime", "midstancegc",
"terminalstancetime", "terminalstancegc", "preswingtime", "preswinggc",
"swingphase", "swingsi", "cadence", "cadencesi",
"stancephasetime", "stancesi", "cofsi", "velocity"
)
# ✅ 결과 저장용 리스트
anova_results <- list()
tukey_results <- list()
summary_stats_list <- list()
# ✅ 각 변수에 대해 분석 수행
for (var in gait_vars) {
# 평균 ± 표준편차 요약
summary_stats <- data1 %>%
group_by(condition) %>%
summarise(
Mean = round(mean(.data[[var]], na.rm = TRUE), 2),
SD = round(sd(.data[[var]], na.rm = TRUE), 2),
N = sum(!is.na(.data[[var]])),
.groups = "drop"
) %>%
mutate(
Variable = var,
Summary = paste0(Mean, " ± ", SD)
) %>%
select(Variable, condition, N, Summary)
summary_stats_list[[var]] <- summary_stats
# ANOVA
formula <- as.formula(paste(var, "~ condition"))
model <- aov(formula, data = data1, na.action = na.omit)
aov_tbl <- summary(model)[[1]] %>%
as.data.frame() %>%
mutate(Variable = var, Term = rownames(.))
anova_results[[var]] <- aov_tbl
# Tukey HSD
tukey <- TukeyHSD(model, "condition")
tukey_df <- as.data.frame(tukey$condition)
tukey_df$Comparison <- rownames(tukey_df)
tukey_df$Variable <- var
tukey_results[[var]] <- tukey_df
}
# ✅ 결과 병합
anova_df <- bind_rows(anova_results) %>%
select(Variable, Term, Df, `Sum Sq`, `Mean Sq`, `F value`, `Pr(>F)`)
tukey_df <- bind_rows(tukey_results) %>%
select(Variable, Comparison, diff, lwr, upr, `p adj`)
summary_df <- bind_rows(summary_stats_list)
# ✅ 엑셀 저장
write_xlsx(
list(
"Descriptive Stats" = summary_df,
"ANOVA Results" = anova_df,
"Tukey HSD" = tukey_df
),
path = "Condition_ANOVA_Results_with_Summary.xlsx"
)