执行 TukeyHSD 时选择了未定义的列

Jen*_*er 3 r anova tukey

总的来说,我对 R 和编码非常陌生,所以我对任何看起来愚蠢的事情提前表示歉意。

\n\n

我进行了方差分析,并想对我的数据进行 TukeyHSD。起初,效果很好。然后我创建了两个数据集。在每一种剂量类型中,我都对数据进行了排序,仅包含两种剂量类型中的一种。然后我继续执行方差分析(有效),但 Tukey 产生此错误

\n\n
\n

-[.data.frame`(mf, mf.cols[[i]]) :选择未定义的列。

\n
\n\n

这意味着什么?我在新创建的数据集中搜索列的名称,它们都存在。

\n\n

太感谢了!!

\n\n

这是我创建的数据集和收到的错误。

\n\n
df1 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="IM", ]\ndf2 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="SC", ]\naov1 = aov(`CFU/g`~Treatment+`Time Point`, data=df1)\n    summary(aov1)\n              Df    Sum Sq   Mean Sq F value   Pr(>F)    \nTreatment      3 3.068e+15 1.023e+15   7.774 7.98e-05 ***\n`Time Point`  16 2.065e+16 1.291e+15   9.810 7.20e-16 ***\nResiduals    134 1.763e+16 1.316e+14                     \n---\nSignif. codes:  0 \xe2\x80\x98***\xe2\x80\x99 0.001 \xe2\x80\x98**\xe2\x80\x99 0.01 \xe2\x80\x98*\xe2\x80\x99 0.05 \xe2\x80\x98.\xe2\x80\x99 0.1 \xe2\x80\x98 \xe2\x80\x99 1\n1 observation deleted due to missingness\nTukeyHSD(aov1)\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

[.data.frame(mf, mf.cols[[i]])中的错误:选择了未定义的列

\n
\n\n
colnames(df1)\n[1] "Steer"      "Dose"       "Time Point" "Treatment"  "Average"   \n[6] "CFU/g"      "Log"\n
Run Code Online (Sandbox Code Playgroud)\n

Nel*_*Gon 5

在浏览了一些旧的源代码后,我认为这与我的数据集中的命名有关。

这是因为对于我的数据来说,就像这篇文章中的数据一样,命名约定不是很友好。虽然我们可以(``)向 中添加“反引号” names,但在使用基于 R 的函数进行编程时有时很难使用它们base。那么解决办法rename如下:

# base
names(df1) <- gsub("CFU\\/g","CFU",names(df1))
names(df1) <- gsub("Time Point","time",names(df1))
# tidyverse
dplyr::rename(df1, CFU = `CFU/g`,
time = `Time Point`)

Run Code Online (Sandbox Code Playgroud)

然后您可以重建模型并重做TukeyHSD

df1 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="IM", ]
df2 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="SC", ]
aov1 = aov(CFU~Treatment+ time , data=df1)
TukeyHSD(aov1)
Run Code Online (Sandbox Code Playgroud)

注意:我无法提供可重现的示例,因为我无法轻松创建示例数据集。然而,我确实按照这个答案中所述解决了这个问题。