You would redefine the Site column in your data frame to be an ordered factor, setting the order according to the mean of nISI (if I understand correctly what you want your order to be). Here is an example.
library(dplyr)
library(ggplot2)
#Standard alphabetical ordering
DF <- data.frame(Site = rep(c("A", "B", "C"), each = 10),
Value = c(rnorm(10, 10,2), rnorm(10, 1,1), rnorm(10, 5,0.5)))
str(DF)
#> 'data.frame': 30 obs. of 2 variables:
#> $ Site : Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 1 1 ...
#> $ Value: num 9.72 8.97 10.1 8.74 11.5 ...
Site_summary <- DF %>%
group_by(Site) %>%
summarise(mean_Site= mean(Value),
sd_Site = sd(Value),
n_Site = n(),
se_Site = sd(Value)/sqrt(n()))
Site_summary
#> # A tibble: 3 x 5
#> Site mean_Site sd_Site n_Site se_Site
#> <fct> <dbl> <dbl> <int> <dbl>
#> 1 A 10.2 1.32 10 0.417
#> 2 B 1.20 0.858 10 0.271
#> 3 C 5.14 0.371 10 0.117
ggplot(Site_summary, aes(Site, mean_Site)) + geom_col()

#Now redo it but first order Site according to the mean of Value
DF <- DF %>% mutate(Site = reorder(Site, Value, FUN = mean))
str(DF)
#> 'data.frame': 30 obs. of 2 variables:
#> $ Site : Factor w/ 3 levels "B","C","A": 3 3 3 3 3 3 3 3 3 3 ...
#> ..- attr(*, "scores")= num [1:3(1d)] 10.2 1.2 5.14
#> .. ..- attr(*, "dimnames")=List of 1
#> .. .. ..$ : chr "A" "B" "C"
#> $ Value: num 9.72 8.97 10.1 8.74 11.5 ...
Site_summary <- DF %>%
group_by(Site) %>%
summarise(mean_Site= mean(Value),
sd_Site = sd(Value),
n_Site = n(),
se_Site = sd(Value)/sqrt(n()))
Site_summary
#> # A tibble: 3 x 5
#> Site mean_Site sd_Site n_Site se_Site
#> <fct> <dbl> <dbl> <int> <dbl>
#> 1 B 1.20 0.858 10 0.271
#> 2 C 5.14 0.371 10 0.117
#> 3 A 10.2 1.32 10 0.417
ggplot(Site_summary, aes(Site, mean_Site)) + geom_col()

ggplot(Site_summary, aes(Site, sd_Site)) + geom_col()

Created on 2019-08-30 by the reprex package (v0.2.1)