【发布时间】:2018-04-07 21:54:09
【问题描述】:
我正在尝试对数据集运行正态性检验 (shapiro-wilk),我希望同时获得所有列的统计数据和 p 值。我已经阅读了关于这个的所有其他页面(R: Shapiro test by group won't produce p-values and corrupt data frame warning,Using shapiro.test on multiple columns in a data frame),但仍然无法弄清楚。任何帮助将不胜感激!
例如,这里是数据集:有一个字符向量 (NVL) 和其余数字,我想按 NVL (NV/VL) 分组。
NVL Var1 Var2 Var3 Var 4 Var 5
1. NV 22.5 26.8 89.2 35.7 100
2. NV 34.7 67.4 29.8 12.4 100
3. NV 68.3 34.5 44.5 23.8 100
4. NV 11.2 55.3 17.5 77.9 100
5. VL 55.6 77.2 59.7 89.6 100
6. VL 60.5 88.7 65.4 99.6 100
7. VL 89.4 87.5 65.9 89.5 100
8. VL 65.4 74.2 75.4 89.5 100
9. VL 81.8 78.5 95.4 92.5 100
代码如下:
library(dplyr)
normalityVar1<-mydata %>%
group_by(NVL) %>%
summarise(statistic = shapiro.test(Var1)$statistic,
p.value = shapiro.test(Var1)$p.value)
这是输出:
NVL statistic p.value
<chr> <dbl> <dbl>
1 VL 0.9125239 0.1985486
2 NV 0.8983501 0.2101248
现在,我是否编辑此代码,以便我可以同时获得所有变量(Var2、3、4、5)的输出?我什至尝试过聚合和 sapply,但我被卡住了。
aggregate(formula = Var1 ~ NVL,
data = mydata,
FUN = function(x) {y <- shapiro.test(x); c(y$statistic, y$p.value)})
如您所见,我只能对一个变量执行此操作!我知道我很接近,但我就是想不通了!!提前感谢您的帮助!
【问题讨论】: