Рассмотрим этот фрейм данных dat1
:
dat1 <- data.frame(Region = rep(c("r1","r2"), each = 100),
State = rep(c("NY","MA","FL","GA"), each = 10),
Loc = rep(c("a","b","c","d","e","f","g","h"),each = 5),
ID = rep(c(1:10), each=2),
var1 = rnorm(200),
var2 = rnorm(200),
var3 = rnorm(200),
var4 = rnorm(200),
var5 = rnorm(200))
У меня есть фреймы данных, похожие на dat1
, созданные выше. Region
, State
и Loc
- это группирующие переменные для каждого наблюдения ID
, и для каждого наблюдения var1:var5
выполняется 5 измерений. Для каждой группирующей переменной я провожу одномерную анову для каждого var
. Когда обнаруживаются существенные различия, я использую функцию TukeyHSD()
и функцию multcompLetters()
из пакета multcompView
для генерации CLD в группах. Поскольку я хочу сделать это для каждой группирующей переменной, я пытаюсь написать функцию, чтобы не повторяться и не делать опечаток. Ниже показано, где я нахожусь с этим:
library(tidyverse)
library(multcomp)
library(multcompView)
Tuk <- function(dat,groupvar,var){
TUK <- TukeyHSD(aov(lm(get(var) ~ get(groupvar), data=dat)))
names(TUK)[[1]] <- paste0(groupvar)
lets<-multcompLetters(extract_p(TUK$groupvar))
lets
}
#assuming all 5 vars were significant in the anovas, I would then run this for each grouping variable as follows:
vars <- paste0(names(dat1[,5:9]))
#by Region
lapply(vars, FUN=Tuk, dat=dat1, groupvar="Region")
#by State
lapply(vars, FUN=Tuk, dat=dat1, groupvar="State")
#by Loc
lapply(vars, FUN=Tuk, dat=dat1, groupvar="Loc")
Код работает вне функции. Функция создаст модель, но я не могу понять, как ее отформатировать, чтобы она распознала, что groupvar
соответствует части multcompLetters(extract_p())
? Как я могу это исправить и как я могу получить функцию вывода аккуратной таблицы, которая показывает каждую группу и буквы для каждой переменной, которую я ей даю сразу. Например, это будет выглядеть примерно так для State
с использованием всех 5 переменных
NY MA FL GA
var1 a ab c a
var2 a ab b c
var3 a c ab bc
var4 ab c ab ab
var5 a b c b
Кроме того, есть ли разумный способ заставить эту функцию создавать блочные диаграммы (для каждой переменной) групп, которые показывают CLD буквы?