一个选项是tidy
它,broom
然后删除NA
行na.omit
library(emmeans)
library(broom)
library(dplyr)
emmeans(model, specs = ~ Rot/Crop | Herb, at = list(Rot = "3", Herb="conv")) %>%
tidy %>%
na.omit
或与as.data.frame/subset
subset(as.data.frame( emmeans(model, specs = ~ Rot/Crop | Herb,
at = list(Rot = "3", Herb="conv"))), !is.na(emmean))
使用可重现的示例
warp.lm <- lm(breaks ~ wool * tension, data = head(warpbreaks, 30))
emmeans (warp.lm, ~ wool | tension)
#tension = L:
# wool emmean SE df lower.CL upper.CL
# A 44.6 4.24 26 35.85 53.3
# B 23.3 7.34 26 8.26 38.4
#tension = M:
# wool emmean SE df lower.CL upper.CL
# A 24.0 4.24 26 15.29 32.7
# B nonEst NA NA NA NA
#tension = H:
# wool emmean SE df lower.CL upper.CL
# A 24.6 4.24 26 15.85 33.3
# B nonEst NA NA NA NA
emmeans (warp.lm, ~ wool | tension) %>%
tidy %>%
na.omit
# A tibble: 4 x 7
# wool tension estimate std.error df statistic p.value
# <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 A L 44.6 4.24 26 10.5 7.29e-11
#2 B L 23.3 7.34 26 3.18 3.78e- 3
#3 A M 24.0 4.24 26 5.67 5.84e- 6
#4 A H 24.6 4.24 26 5.80 4.15e- 6
或在 中,将base R
其强制为非 NA 行data.frame
subset
subset(as.data.frame(emmeans (warp.lm, ~ wool | tension)), !is.na(emmean))
# wool tension emmean SE df lower.CL upper.CL
#1 A L 44.55556 4.235135 26 35.850110 53.26100
#2 B L 23.33333 7.335470 26 8.255059 38.41161
#3 A M 24.00000 4.235135 26 15.294554 32.70545
#5 A H 24.55556 4.235135 26 15.850110 33.26100