0

Here is the problem with the iris dataframe. I´m trying to run a kruskal.test of each variable against the species.

library(dplyr)

for (col in colnames(iris)[1:ncol(iris)-1]) {
  iris %>%
    group_by(Species) %>%
    summarise(
      zone=col,
      pvalue =  kruskal.test(get(col) ~ Species)$p.value,
    ) %>%
    print()

Error in (function (cond) : error in evaluating the argument 'x' in selecting a method for function 'print': ℹ In argument: pvalue = kruskal.test(get(col) ~ Species)$p.value. ℹ In group 1: Species = setosa. Caused by error in kruskal.test.default(): ! all observations are in the same group

david
  • 805
  • 1
  • 9
  • 21

1 Answers1

0

End up doing this and it works. Looks like the summary function was the problem

for (col in colnames(iris)[1:ncol(iris)-1]) {
  iris %>%
    group_by(Species) %>%
     do(tidy(kruskal.test(get(col) ~Species,data=iris))) %>%
  print()
  }


# A tibble: 3 × 5
# Groups:   Species [3]
  Species    statistic  p.value parameter method                      
  <chr>          <dbl>    <dbl>     <int> <chr>                       
1 setosa          96.9 8.92e-22         2 Kruskal-Wallis rank sum test
2 versicolor      96.9 8.92e-22         2 Kruskal-Wallis rank sum test
3 virginica       96.9 8.92e-22         2 Kruskal-Wallis rank sum test
# A tibble: 3 × 5
# Groups:   Species [3]
  Species    statistic  p.value parameter method                      
  <chr>          <dbl>    <dbl>     <int> <chr>                       
1 setosa          63.6 1.57e-14         2 Kruskal-Wallis rank sum test
2 versicolor      63.6 1.57e-14         2 Kruskal-Wallis rank sum test
3 virginica       63.6 1.57e-14         2 Kruskal-Wallis rank sum test
# A tibble: 3 × 5
david
  • 805
  • 1
  • 9
  • 21