我试图循环通过一个dataframe和运行统计摘要,测试和图形通过循环通过dataframe内的某些列的图。我是r中for循环的新手,有点理解!!sym但仍在学习它。询问如何使用它时,作为夏皮罗测试的一部分计算均值差的建议?
例如,在示例数据集中,我想运行配对t检验,以查看每个样本的治疗A和B是否对“效果”、“摄入量”、“温度”有任何影响;但首先需要确定我的数据集是否正态分布。因此我在下面的代码中使用shapiro.test。
Excel工作表中的示例数据集
ID Treatment Effect Intake Count Temperature
1 A 0.1 1 8 20
1 B 0.4 3 9 21
2 A 0.1 3 0 27
2 B 0.2 4 5 28
3 A 0.4 1 14 21
3 B 0.6 4 4 23
... ... ... ... ...
library(tidyverse)
library(readxl)
df <- read_excel(paste0(getwd(),"/Data.xlsm"), sheet="data")
for (i in c("Effect","Intake", "Temperature")){
#other code is here for means, etc.
#code for shapiro test where i am having the issue
mean_diff <- with(df, (!!sym(i))[Treatment == "A"] - (!!sym(i))[Treatment == "B"])
s_test <- tidy(shapiro.test(mean_diff))
#other code to graph
}
我在mean_diff代码处得到的错误:
Error in !sym(i) : invalid argument type
2条答案
按热度按时间wwtsj6pe1#
这是一个基于tidyverse和随机数据(使用您的原始变量名)的解决方案,因为我在您的编辑可见之前编写了它。
如果愿意,可以编辑代码以提供
p.value
以外的摘要。您甚至可以使用list(shapiro.test( y - z))
捕获shapiro.test
的整个输出。doinxwow2#
这里不需要
for()
-loop和!!sym()
。通过一点旋转,您可以排列数据以应用处理之间的差异并应用shapiro.test()
。