For an effective _ad hoc_ test, I suggest you use height categories 'Below 16' and 'Above 16' for each type of forest. This will result in at $2 \times 2$ table with sufficiently large counts to use a chi-squared test. TBL = rbind(c(145,17), c(143,46)) cq.out = chisq.test(TBL); cq.out Pearson's Chi-squared test with Yates' continuity correction data: TBL X-squared = 10.433, df = 1, p-value = 0.001238 Then compare observed and expected counts. cq.out$obs [,1] [,2] [1,] 145 17 [2,] 143 46 cq.out$exp [,1] [,2] [1,] 132.9231 29.07692 [2,] 155.0769 33.92308 cq.out$res [,1] [,2] [1,] 1.0475050 -2.239660 [2,] -0.9698012 2.073522 Under the null hypothesis that type of forest and height categories of trees are independent, you would expect around 30 'tall' trees in each type of forest. In fact, observed counts of tall trees are significantly higher in the undisturbed forest. The Pearson residuals are the signed square roots of the components $r_{ij}^2=\frac{(X_{ij}-E_{ij})^2}{E_{ij}}.$ If the chi-squared test rejects in a 2-by-2 table, then the cells where absolute values $|r_{ij}|$ of residuals exceed $2$ often point the way to important departures from the null hypothesis. **But be careful,** you should not go so far as to claim that trees in the undisturbed forest are _generally_ taller. The median heights of trees is about the same (13.5 ft) in both. Also, mean heights are about the same (near 13 ft) in both. If you don't have the original heights, then you could roughly reclaim them by using interval midpoints: x = rep(seq(3.5,28.5,by=5), c(2,47,86,18,3,1)) y = rep(seq(3.5,28.5,by=5), c(1,59,83,33,13,0)) Summaries of these approximate heights are similar for the two forests, as follows: summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. 3.50 8.50 13.50 12.74 13.50 28.50 summary(y) Min. 1st Qu. Median Mean 3rd Qu. Max. 3.50 8.50 13.50 13.45 13.50 23.50 Also, a two-sample t.test on the approximate heights does not show significance at the 5% level. t.test(x,y)$p.val [1] 0.1092758 _Addendum:_ Density histograms based on height categories. [![enter image description here][1]][1] R code for histogram: cutp = seq(1,31,by=5) par(mfrow=c(2,1)) hist(x, prob=2, br=cutp, ylim=c(0,.1), col="skyblue2", main="Logged") abline(h=seq(0,.1, by=.02), col="green2") hist(y, prob=2, br=cutp, ylim=c(0,.1), col="skyblue2", main="Undisturbed") abline(h=seq(0,.1, by=.02), col="green2") par(mfrow=c(1,1)) [1]: https://i.sstatic.net/UD1XE.png