Поскольку выходные данные представляют собой список фреймов данных, в частности список объектов класса "summary_emm"
, который расширяет data.frame
, вы можете выполнять простые операции с фреймами данных:
str(anova_carmanuf_letters[[1]])
# Classes ‘summary_emm’ and 'data.frame': 32 obs. of 7 variables:
# $ Manufacturer: Factor w/ 32 levels "Suzuki","Geo",..: 1 2 3 4 5 6 7 8 9 10 ...
# $ lsmean : num 7.3 9.1 9.2 9.32 11.37 ...
# $ SE : num 5.93 4.19 5.93 2.96 3.42 ...
# $ df : num 61 61 61 61 61 61 61 61 61 61 ...
# $ lower.CL : num -12.2807 -4.7457 -10.3807 -0.4654 0.0617 ...
# $ upper.CL : num 26.9 22.9 28.8 19.1 22.7 ...
# $ .group : chr " abcd " " ab " " abcde " " a " ...
# - attr(*, "estName")= chr "lsmean"
# - attr(*, "clNames")= chr "lower.CL" "upper.CL"
# - attr(*, "pri.vars")= chr "Manufacturer"
# - attr(*, "adjust")= chr "tukey"
# - attr(*, "side")= num 0
# - attr(*, "delta")= num 0
# - attr(*, "type")= chr "link"
# - attr(*, "mesg")= chr "Confidence level used: 0.95" "Conf-level adjustment: sidak method for 32 estimates" "P value adjustment: tukey method for comparing a family of 32 estimates" "significance level used: alpha = 0.05"
В частности, рассмотрим lapply
длянастроить Производитель уровни факторов.
myvars <- c("Suzuki", "Geo", "Saturn", "Hyundai", "Subaru", "Plymouth", "Ford",
"Dodge", "Eagle", "Honda", "Pontiac", "Toyota", "Mercury", "Nissan",
"Mitsubishi", "Chevrolet", "Mazda", "Volkswagen", "Oldsmobile",
"Chrylser", "Saab", "Buick", "Acura", "Chrysler", "Volvo", "BMW",
"Audi", "Lexus", "Lincoln", "Cadillac", "Mercedes-Benz", "Infiniti")
anova_carmanuf_letters <- lapply(anova_carmanuf_letters, function(df)
within(df, Manufacturer <- factor(Manufacturer, levels=myvars))
)
Однако имейте в виду, что при использовании вышеуказанной команды не происходит видимого упорядочения, только уровни в столбце коэффициента. Вы можете order
впоследствии на новых уровнях, даже комбинируя два вызова lapply
:
anova_carmanuf_letters <- lapply(anova_carmanuf_letters, function(df)
df[order(df$Manufacturer),])
anova_carmanuf_letters[[1]]
# Manufacturer lsmean SE df lower.CL upper.CL .group
# 29 Suzuki 7.30000 5.927581 61 -12.28072477 26.88072 abcd
# 12 Geo 9.10000 4.191433 61 -4.74566327 22.94566 ab
# 27 Saturn 9.20000 5.927581 61 -10.38072477 28.78072 abcde
# 14 Hyundai 9.32500 2.963790 61 -0.46536239 19.11536 a
# 28 Subaru 11.36667 3.422290 61 0.06172995 22.67160 ab
# 24 Plymouth 11.40000 5.927581 61 -8.18072477 30.98072 abcde
# 11 Ford 12.43750 2.095716 61 5.51466837 19.36033 a
# 9 Dodge 12.51667 2.419925 61 4.52286925 20.51046 ab
# 10 Eagle 12.70000 4.191433 61 -1.14566327 26.54566 abcd
# 13 Honda 13.06667 3.422290 61 1.76172995 24.37160 abc
# 25 Pontiac 13.28000 2.650895 61 4.52323367 22.03677 ab
# 30 Toyota 14.02500 2.963790 61 4.23463761 23.81536 abc
# 20 Mercury 14.10000 4.191433 61 0.25433673 27.94566 abcde
# 22 Nissan 14.85000 2.963790 61 5.05963761 24.64036 abc
# 21 Mitsubishi 15.05000 4.191433 61 1.20433673 28.89566 abcde
# 6 Chevrolet 16.08750 2.095716 61 9.16466837 23.01033 abc
# 18 Mazda 16.34000 2.650895 61 7.58323367 25.09677 abcd
# 31 Volkswagen 16.45000 2.963790 61 6.65963761 26.24036 abcde
# 23 Oldsmobile 16.55000 2.963790 61 6.75963761 26.34036 abcde
# 7 Chrylser 18.40000 5.927581 61 -1.18072477 37.98072 abcdef
# 26 Saab 20.30000 5.927581 61 0.71927523 39.88072 abcdef
# 4 Buick 20.75000 2.963790 61 10.95963761 30.54036 abcdef
# 1 Acura 21.05000 4.191433 61 7.20433673 34.89566 abcdef
# 8 Chrysler 22.00000 4.191433 61 8.15433673 35.84566 abcdef
# 32 Volvo 23.30000 4.191433 61 9.45433673 37.14566 abcdef
# 3 BMW 23.70000 5.927581 61 4.11927523 43.28072 abcdef
# 2 Audi 28.35000 4.191433 61 14.50433673 42.19566 abcdef
# 16 Lexus 31.10000 4.191433 61 17.25433673 44.94566 bcdef
# 17 Lincoln 33.85000 4.191433 61 20.00433673 47.69566 cdef
# 5 Cadillac 35.25000 4.191433 61 21.40433673 49.09566 def
# 19 Mercedes-Benz 36.40000 4.191433 61 22.55433673 50.24566 ef
# 15 Infiniti 45.40000 5.927581 61 25.81927523 64.98072 f
Чтобы сохранить нужные столбцы и переименовать их в соответствующее исходное имя столбца, используйте Map
для циклического прохождения всех 9 элементов datanames и 9 фреймов данных:
new_anova_carmanuf_letters <- Map(function(df, nm)
setNames(df[c("Manufacturer", ".group")],
c("Manufacturer", nm)),
df = anova_carmanuf_letters, nm = datanames)