这似乎是一个非常简单的问题,但我找不到答案.
我有一个数据帧(让调用它df),包含n = 100列(C1,C2..., C100)和50行(R1,R2..., R50).我测试了数据框中的所有列,以确保它们是数字的.我想知道每列中的数据是否具有使用该shapiro.test()函数的正态分布.
我能够使用代码逐列进行:
> shapiro.test(df$Cn)
要么
> shapiro.test(df[,c(Cn)])
但是当我尝试在几个列上同时执行它时它不起作用:
> shapiro.test(df[,c(C1:C100)])
返回错误:
Error in `[.data.frame`(x, complete.cases(x)) : undefined columns selected
如果有人能够建议同时进行所有测试的方法,并最终将结果存储在新的数据帧/矩阵/列表/向量中,我将不胜感激.
谢谢 !
勒布
之前已经问过这个问题,但提出的解决方案只能部分解决我的问题,而且我已经为此努力了好几天。我觉得是时候寻求帮助了,即使这个话题之前已经解决了。若带来不便请谅解。
我在 R 中有一个非常大的 data.frame,有 11 个变量的 6288 个观察值。我想对每个变量按组运行夏皮罗测试,但按两个不同的因素(数量和处理)分组。例如,提供了一个具有一个变量的大大简化的样本数据集:
data <- data.frame(Number=c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2),
                   Treatment=c("High","High","High","High","High","High","Low",
                               "Low","Low","Low","Low","Low","High","High","High",
                               "High","High","High","Low","Low","Low","Low","Low",
                               "Low"),
                   FW=c(746,500,498,728,626,580,1462,738,1046,568,320,578,654,664,
                        660,596,1110,834,486,548,688,776,510,788))
我想运行一个测试夏皮罗FW通过Number和TreatmenT,所以我有1High,;低,2High,2Low等测试,我想有两个数据W¯¯统计和P值。原始数据集包含每组 16 个观测值(1High、1Low 等;总组数 = 400),偶尔还有一个NA;此示例数据集包含每组 6 个观察值(1High、1Low、2High、2Low;组 = 4)。
以下代码以前发布为解决此问题的 shapiro 测试组:
res<-aggregate(cbind(P.value=data$FW)~data$Number+data$Treatment,data,FUN=shapiro.test)
我还尝试了许多其他分组方式,但似乎没有任何效果。上面的代码最接近。
上面使用聚合的代码适当地对我的数据进行了分组,并为我提供了 W 统计信息,但它不会为我提供 P 值(列标题显示“P.value”,但这不是 P 值,而是 W 统计信息,我已经通过多种方式确认了这一点)。它还给了我以下警告消息:
Warning message:
In format.data.frame(x, digits = digits, na.encode = FALSE) :
  corrupt data frame: columns will be truncated or padded with NAs
当我在 Google 上搜索此警告时,结果表明它是 中的一个错误data.frame,但我不知道如何解决它。我什至不确定在这种情况下它真的是一个错误。 …