删除 emmeans 结果中的非 Est 行
remove nonEst row(s) in emmeans result
我的设计不平衡,所以当我在特定级别将 emmeans
应用于我的模型时,缺少的嵌套因子(存在于其他级别)在我的输出中被标记为 nonEst
table。如何更改我的代码,以便下面的 table 仅显示三个可估计的行?
emmeans(model, specs = ~ Rot/Crop | Herb, at = list(Rot = "3", Herb="conv"))
Herb = conv:
Rot Crop emmean SE df lower.CL upper.CL
3 alfalfa nonEst NA NA NA NA
3 corn 3.50 0.283 270 2.94 4.06
3 oat 3.44 0.283 270 2.88 3.99
3 soybean 2.65 0.253 270 2.15 3.15
Confidence level used: 0.95
一个选项是用 broom
tidy
它,然后用 na.omit
删除 NA
行
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
中,将其强制为 data.frame
,然后 subset
非 NA 行
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
我的设计不平衡,所以当我在特定级别将 emmeans
应用于我的模型时,缺少的嵌套因子(存在于其他级别)在我的输出中被标记为 nonEst
table。如何更改我的代码,以便下面的 table 仅显示三个可估计的行?
emmeans(model, specs = ~ Rot/Crop | Herb, at = list(Rot = "3", Herb="conv"))
Herb = conv:
Rot Crop emmean SE df lower.CL upper.CL
3 alfalfa nonEst NA NA NA NA
3 corn 3.50 0.283 270 2.94 4.06
3 oat 3.44 0.283 270 2.88 3.99
3 soybean 2.65 0.253 270 2.15 3.15
Confidence level used: 0.95
一个选项是用 broom
tidy
它,然后用 na.omit
NA
行
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
中,将其强制为 data.frame
,然后 subset
非 NA 行
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