在agricolae Kruskal test,R。处理关系

时间:2016-07-04 03:19:17

标签: r statistics missing-data kruskal-wallis

我正在使用kruskal.test包在某些非正常数据上运行agricolae。有些群体的价值完全相同。 kruskal测试不能很好地处理这个问题,我收到错误Error in if (s) { : missing value where TRUE/FALSE needed。起初我以为这是因为所有值都是0,但是当我将它们全部设为相同的大数(进行测试)时,会出现相同的错误并且函数将stop(通过循环运行函数)并且不会评估超出第一个并列变量的任何东西。

显然没有必要在这些组上运行统计数据,因为没有区别,但我使用agricolae:kruskal生成的信息来生成汇总表,我需要包含这些变量。我更愿意继续使用这个包,因为它给了我很多有价值的信息。有什么办法可以让它贯穿绑定的变量吗?

> dput(example) structure(list(TREATMENT = c("A", "A", "A", "B", "B", "C", "C", "C", "D", "D"), W = c(0, 1.6941524646937, 1.524431531984, 0.959282869723864, 1.45273122733115, 0, 1.57479386520925, 0.421759202661462, 1.34235435984449, 1.52131484305823), X = c(0, 0.663872820198758, 0.202935807030853, 0.836223346381214, 0.750767193777965, 1.18128574225979, 2.03622986392828, 3.56466682539425, 0.919751117364462, 0.917347336682722), Y = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Z = c(2.1477548118197, 2.0111754022729, 3.14642815196242, 4.46967452127494, 1.53715421615569, 2.36274861406182, 2.33262528044302, 2.50970456594739, 2.96088598025103, 2.22841740590261 )), class = "data.frame", row.names = c(NA, 10L), .Names = c("TREATMENT", "W", "X", "Y", "Z"))

library(agricolae)

example<-as.data.frame(example)


for(i in 2:(ncol(example))){
  krusk <- kruskal(example[,i],TREATMENT,group=TRUE)
print(krusk)  
}

1 个答案:

答案 0 :(得分:1)

for(i in 2:(ncol(example))){
  if(var(example[,i]) > 0){
  krusk <- kruskal(example[,i],example$TREATMENT,group=TRUE)
  print(krusk)  
  }
}