Alice Hobbs
Alice Hobbs

Reputation: 1215

Using count(), aggregate(), data.table () or dplyr() to summarise the data (mean, standard deviation)

Overview

I have a data-set (see below) called "subset_leaf_1" showing how climatic environmental affects the canopy index of a particular oak tree species called "Quercus petraea".

I have a column named Urbanisation_index (i.e. data frame below) containing four sub-levels (i.e. 1, 2, 3, and 4). Each sublevel (1-4) highlights the extent of urbanisation surrounding "Quercus petraea".

I would also like to calculate the mean Canopy_Index for each sublevel of the Urbanisation_index.

Problem

I want to count the number of rows for each sublevel of the urbanisation index by species using either data.table(), aggregate(), or count() in the dplyr package, and then calculate the mean Canopy_index for each sublevel of the Urbanisation_index.

If anyone can help, I would be deeply appreciative

The desired result

enter image description here

R-code:

Firstly, I subsetted the data for Quercus petraea

set.seed(45L)

##Subset dataframe leaf_1 by"Quercus petraea"
subset_leaf_1<-subset(leaf_1, Species == "Quercus petraea")

#Produce new dataframe for the subsetted data (observation 1)
Subset_leaf_ob_1<-data.frame(subset_leaf_1, stringsAsFactors=TRUE)

dplyr()

library(dplyr)

#sum and count of species and urbanisation index
#Mean and standard deviation for Canopy_Index, per urbansiation level, per species

Summarised_leaf_1<-Subset_leaf_ob_1  %>% 
                             count(Species, Urbanisation_index) %>% 
                             summarise(Subset_leaf_ob_1, mean=mean(Canopy_Index), sd=sd(Canopy_Index))

#Error message

Error in summarise_impl(.data, dots) : 
Column `Subset_leaf_ob_1` must be length 1 (a summary value), not 11

aggregate()

I can use these two equations to find the counts per row of the Urbanisation_index, and the mean of the Canopy_Index per Urbanisation_index sublevel using these two equations:

##Row count for Urbansiation_index 
aggregate_subset_leaf_1<-aggregate(Obs_.no ~ Species + Urbanisation_index, 
                               data = Subset_leaf_ob_1, FUN = length)

##Mean Canopy_Index per Urbanisation_index sublevel per speces
  subset_leaf_1_canopy<-aggregate(Canopy_Index ~ Species*Urbanisation_index, 
                                           data = Subset_leaf_ob_1, FUN = mean)

To combine the counts per row of the Urbanisation_index and mean Canopy_index per sublevel, I applied this function below (table above). However, this function adds zero's to the counts per row, and I cannot rename the column headings to produce a new data frame. After checking the R environment subsection of R Studio, the mean and standard deviation of the Canopy_Index is not showing.

##Function to incorporate both counts of urbanisation index and the mean and standard deviation for canopy index
Mean_sd_Count_leaf_1<-aggregate(Canopy_Index ~ Species+Urbanisation_index, 
                            data = Subset_leaf_ob_1, 
                            FUN = function(x) c(Counts = length(x), Mean = mean(x), Sd = sd(x)))

##Rename the columns
colnames(Mean_sd_Count_leaf_1)<-c("Species", "Urbanisation_Index", "Counts", "Mean_Canopy_Index", "SD_Canopy_Index")

##Error message

Error in names(x) <- value : 
  'names' attribute [5] must be the same length as the vector [3]

traceback()

 1: `colnames<-`(`*tmp*`, value = c("Species", "Urbanisation_Index", 
   "Counts", "Mean_Canopy_Index", "SD_Canopy_Index"))

data.table()

   library(data.table)

Data.table.leaf.1<-data.table(Subset_leaf_ob_1)

leaf.1.data.table<-Data.table.leaf.1[, .N, by = list(Species, Urbanisation_index), 
                                           mean_test=rowMeans(Canopy_Index),
                                           sd_test=rowMeans(Canopy_Index)] 

##Error Message

Error in `[.data.table`(Data.table.leaf.1, , .N, by = list(Species, Urbanisation_index),  : 
  unused arguments (mean_test = rowMeans(Canopy_Index), sd_test = rowMeans(Canopy_Index))

Data

structure(list(Obs_.no = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 
10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 
23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 
36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 
49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 61L, 
62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, 74L, 
75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 86L, 87L, 
88L, 89L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L, 98L, 99L, 100L, 
101L, 102L, 103L, 104L, 105L, 106L, 107L, 108L, 109L, 110L, 111L, 
112L, 113L, 114L, 115L, 116L, 117L, 118L, 119L, 120L, 121L, 122L, 
123L, 124L, 125L, 126L, 127L, 128L, 129L, 130L, 131L, 132L, 133L, 
134L, 135L, 136L, 137L, 138L, 139L, 140L, 141L, 142L, 143L, 144L, 
145L, 146L, 147L, 148L, 149L, 150L, 151L, 152L, 153L, 154L, 155L, 
156L, 157L, 158L, 159L, 160L, 161L, 162L, 163L, 164L, 165L, 166L, 
167L, 168L, 169L, 170L, 171L, 172L, 173L, 174L, 175L, 176L, 177L, 
178L, 179L, 180L, 181L, 182L, 183L, 184L, 185L, 186L, 187L, 188L, 
189L, 190L, 191L, 192L, 193L, 194L, 195L, 196L, 197L, 198L, 199L, 
200L, 201L, 202L, 203L, 204L, 205L, 206L, 207L, 208L, 209L, 210L, 
211L, 212L, 213L, 214L, 215L, 216L, 217L, 218L, 219L, 220L, 221L, 
222L, 223L, 224L, 225L, 226L, 227L, 228L, 229L, 230L, 231L, 232L, 
233L, 234L, 235L, 236L, 237L, 238L, 239L, 240L, 241L, 242L, 243L, 
244L, 246L, 247L, 248L, 249L, 250L, 251L, 252L, 253L, 254L, 255L, 
256L, 257L, 258L, 259L, 260L, 261L, 262L, 263L, 264L, 265L, 266L, 
267L, 268L, 269L, 270L, 271L, 272L, 273L, 274L, 275L, 276L, 277L, 
278L, 279L, 280L, 281L, 282L, 283L, 284L, 285L, 286L, 287L, 288L, 
289L, 290L, 291L, 292L, 293L, 294L, 295L, 296L), Date_observed = structure(c(5L, 
17L, 7L, 7L, 7L, 7L, 3L, 3L, 3L, 3L, 12L, 12L, 12L, 12L, 4L, 
4L, 4L, 4L, 9L, 9L, 9L, 9L, 9L, 9L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
7L, 12L, 12L, 12L, 12L, 13L, 8L, 8L, 8L, 8L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 9L, 9L, 9L, 12L, 12L, 6L, 6L, 6L, 
6L, 16L, 16L, 16L, 16L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 7L, 7L, 
7L, 7L, 7L, 14L, 14L, 14L, 6L, 6L, 10L, 10L, 10L, 10L, 4L, 4L, 
4L, 4L, 5L, 5L, 5L, 5L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 1L, 
1L, 12L, 12L, 12L, 12L, 12L, 5L, 5L, 5L, 7L, 7L, 7L, 7L, 5L, 
5L, 5L, 5L, 6L, 6L, 6L, 6L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 
11L, 7L, 7L, 7L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 12L, 12L, 12L, 
5L, 5L, 5L, 5L, 9L, 9L, 11L, 11L, 11L, 11L, 3L, 3L, 10L, 10L, 
10L, 10L, 4L, 4L, 4L, 4L, 12L, 12L, 12L, 10L, 10L, 10L, 10L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 14L, 14L, 14L, 14L, 9L, 9L, 9L, 
9L, 11L, 11L, 11L, 11L, 4L, 4L, 4L, 4L, 7L, 7L, 7L, 14L, 14L, 
14L, 14L, 10L, 10L, 11L, 11L, 11L, 3L, 3L, 3L, 3L, 14L, 4L, 4L, 
4L, 4L, 3L, 3L, 3L, 3L, 7L, 7L, 7L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 5L, 5L, 5L, 12L, 6L, 6L, 6L, 6L, 11L, 6L, 6L, 6L, 12L, 12L, 
2L, 2L, 2L, 2L, 6L, 6L, 6L, 10L, 10L, 10L, 10L, 15L, 11L, 11L, 
11L, 11L, 3L, 3L, 3L, 7L, 7L, 7L, 4L, 4L, 4L, 12L, 12L, 12L, 
12L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 12L, 12L, 12L, 12L, 7L, 
7L, 7L, 7L, 12L, 12L, 12L, 12L), .Label = c("10/1/18", "10/14/18", 
"10/19/18", "10/20/18", "10/21/18", "10/22/18", "10/23/18", "10/24/18", 
"10/25/18", "10/26/18", "10/27/18", "10/28/18", "10/28/19", "10/29/18", 
"11/6/18", "12/9/18", "8/20/18"), class = "factor"), Latitude = c(51.4175, 
52.12087, 52.0269, 52.0269, 52.0269, 52.0269, 52.947709, 52.947709, 
52.947709, 52.947709, 53.14919, 53.14919, 55.94154, 55.94154, 
51.59449, 51.59449, 51.59449, 51.59449, 51.491811, 51.491811, 
52.59925, 52.59925, 52.59925, 52.59925, 51.60157, 51.60157, 51.60157, 
51.60157, 52.6888, 52.6888, 52.6888, 52.6888, 50.697802, 50.697802, 
50.697802, 50.697802, 53.62417, 50.446841, 50.446841, 50.446841, 
50.446841, 35.292896, 35.292896, 53.959679, 53.959679, 53.959679, 
53.959679, 32.2855, 32.2855, 32.2855, 32.2855, 52.01434, 52.01434, 
52.01434, 50.8365, 50.8365, 51.78375, 51.78375, 51.78375, 51.78375, 
51.456965, 51.456965, 51.456965, 51.456965, 51.3651, 51.3651, 
51.3651, 51.3651, 52.01182, 52.01182, 52.01182, 52.01182, 55.919722, 
50.114277, 50.114277, 50.114277, 50.114277, 53.39912, 53.39912, 
53.39912, 51.43474, 51.43474, 51.10676, 51.10676, 51.10676, 51.10676, 
50.435984, 50.435984, 50.435984, 50.435984, 51.78666, 51.78666, 
51.78666, 51.78666, 51.473203, 51.473203, 51.473203, 53.38728, 
53.38728, 53.38728, 53.38728, 52.441088, 52.441088, 52.552344, 
19.61263, 19.61263, 19.61263, 19.61263, 53.582285, 53.582285, 
53.582285, 49.259471, 49.259471, 49.259471, 49.259471, 50.461625, 
50.461625, 50.461625, 50.461625, 51.746642, 51.746642, 51.746642, 
51.746642, 52.2501, 52.2501, 52.2501, 52.2501, 52.423336, 52.423336, 
52.423336, 52.423336, 50.79387, 50.79387, 50.79387, 53.615575, 
53.615575, 53.615575, 53.615575, 52.55317, 52.55317, 52.55317, 
52.55317, 51.08474, 51.08474, 51.08474, 53.19329, 53.19329, 53.19329, 
53.19329, 55.96785, 55.96785, 56.52664, 56.52664, 56.52664, 56.52664, 
52.04252, 52.04252, 51.8113, 51.8113, 51.8113, 51.8113, 52.580157, 
52.580157, 52.580157, 52.580157, 51.5894, 51.5894, 51.5894, 50.52008, 
50.52008, 50.52008, 50.52008, 25.3671, 25.3671, 25.3671, 25.3671, 
51.48417, 51.48417, 51.48417, 51.48417, 54.58243, 54.58243, 54.58243, 
54.58243, 52.58839, 52.58839, 52.58839, 52.58839, 52.717283, 
52.717283, 52.717283, 52.717283, 50.740764, 50.740764, 50.740764, 
50.740764, -36.865, -36.865, -36.865, 52.57937, 52.57937, 52.57937, 
52.57937, 50.736531, 50.736531, 50.79926, 50.79926, 50.79926, 
53.675996, 53.675996, 53.675996, 53.675996, 55.43828, 48.35079, 
48.35079, 48.35079, 48.35079, 51.36445, 51.36445, 51.36445, 51.36445, 
52.36286, 52.36286, 52.36286, -25.77831, -25.77831, -25.77831, 
-25.77831, -20.112381, -20.112381, -20.112381, -20.112381, 52.122402, 
52.122402, 52.122402, 51.481079, 52.16104, 52.16104, 52.16104, 
52.16104, 54.7311, 51.61842, 51.61842, 51.61842, 55.91913, 55.91913, 
51.06433, 51.06433, 51.06433, 51.06433, 55.920966, 55.920966, 
55.920966, 51.6528, 51.6528, 51.6528, 51.6528, 57.158724, 51.88485, 
51.88485, 51.88485, 51.88485, 52.34015, 52.34015, 52.34015, 50.615029, 
50.615029, 50.615029, 53.37687, 53.37687, 53.37687, 54.27745, 
54.27745, 54.27745, 54.27745, 52.026042, 52.026042, 52.026042, 
52.026042, 51.319032, 51.319032, 51.319032, 51.319032, 51.51357, 
51.51357, 51.51357, 51.51357, 53.43202, 53.43202, 53.43202, 53.43202, 
51.50823, 51.50823, 51.50823, 51.50823), Longitude = c(-0.32118, 
-0.29293, -0.7078, -0.7078, -0.7078, -0.7078, -1.435407, -1.435407, 
-1.435407, -1.435407, -0.76115, -0.76115, -3.19139, -3.19139, 
-2.98828, -2.98828, -2.98828, -2.98828, -3.210324, -3.210324, 
1.33011, 1.33011, 1.33011, 1.33011, -3.67111, -3.67111, -3.67111, 
-3.67111, -3.30909, -3.30909, -3.30909, -3.30909, -2.11692, -2.11692, 
-2.11692, -2.11692, -2.43155, -3.706923, -3.706923, -3.706923, 
-3.706923, 139.676727, 139.676727, -1.061008, -1.061008, -1.061008, 
-1.061008, -110.9434, -110.9434, -110.9434, -110.9434, 1.04007, 
1.04007, 1.04007, -0.1631, -0.1631, -0.65046, -0.65046, -0.65046, 
-0.65046, -2.624917, -2.624917, -2.624917, -2.624917, 0.70706, 
0.70706, 0.70706, 0.70706, -0.70082, -0.70082, -0.70082, -0.70082, 
-3.210278, -5.541128, -5.541128, -5.541128, -5.541128, -2.33356, 
-2.33356, -2.33356, 0.45981, 0.45981, -2.32071, -2.32071, -2.32071, 
-2.32071, -4.105617, -4.105617, -4.105617, -4.105617, -0.71433, 
-0.71433, -0.71433, -0.71433, -2.586492, -2.586492, -2.586492, 
-2.95811, -2.95811, -2.95811, -2.95811, -0.176158, -0.176158, 
-1.337177, 57.66801, 57.66801, 57.66801, 57.66801, -2.802239, 
-2.802239, -2.802239, -123.107788, -123.107788, -123.107788, 
-123.107788, 3.560973, 3.560973, 3.560973, 3.560973, 0.486416, 
0.486416, 0.486416, 0.486416, -0.8825, -0.8825, -0.8825, -0.8825, 
-1.787563, -1.787563, -1.787563, -1.787563, 0.26684, 0.26684, 
0.26684, -2.432959, -2.432959, -2.432959, -2.432959, -0.20337, 
-0.20337, -0.20337, -0.20337, -0.73645, -0.73645, -0.73645, -0.63793, 
-0.63793, -0.63793, -0.63793, -3.18084, -3.18084, -3.40313, -3.40313, 
-3.40313, -3.40313, -2.43733, -2.43733, -0.22894, -0.22894, -0.22894, 
-0.22894, -1.948571, -1.948571, -1.948571, -1.948571, 0.1879, 
0.1879, 0.1879, -4.20756, -4.20756, -4.20756, -4.20756, 51.53781, 
51.53781, 51.53781, 51.53781, -0.34854, -0.34854, -0.34854, -0.34854, 
-5.93229, -5.93229, -5.93229, -5.93229, -1.96843, -1.96843, -1.96843, 
-1.96843, -2.410575, -2.410575, -2.410575, -2.410575, -2.361234, 
-2.361234, -2.361234, -2.361234, 174.757, 174.757, 174.757, -1.89325, 
-1.89325, -1.89325, -1.89325, -2.011143, -2.011143, -3.19446, 
-3.19446, -3.19446, -1.272824, -1.272824, -1.272824, -1.272824, 
-4.64226, 10.91812, 10.91812, 10.91812, 10.91812, -0.23106, -0.23106, 
-0.23106, -0.23106, -2.06327, -2.06327, -2.06327, 28.22357, 28.22357, 
28.22357, 28.22357, 57.580207, 57.580207, 57.580207, 57.580207, 
-0.487443, -0.487443, -0.487443, -0.026923, 0.18702, 0.18702, 
0.18702, 0.18702, -5.8041, -0.16034, -0.16034, -0.16034, -3.20987, 
-3.20987, -1.79923, -1.79923, -1.79923, -1.79923, -3.193503, 
-3.193503, -3.193503, -1.57361, -1.57361, -1.57361, -1.57361, 
-2.166099, -0.17844, -0.17844, -0.17844, -0.17844, -1.27795, 
-1.27795, -1.27795, -1.966392, -1.966392, -1.966392, -1.34506, 
-1.34506, -1.34506, -0.47911, -0.47911, -0.47911, -0.47911, -0.503114, 
-0.503114, -0.503114, -0.503114, -0.472994, -0.472994, -0.472994, 
-0.472994, -3.18738, -3.18738, -3.18738, -3.18738, -2.27968, 
-2.27968, -2.27968, -2.27968, -0.25847, -0.25847, -0.25847, -0.25847
), Altitude = c(5L, 0L, 68L, 68L, 68L, 68L, 104L, 104L, 104L, 
104L, 11L, 11L, 0L, 0L, 7L, 7L, 7L, 7L, 15L, 15L, 23L, 23L, 23L, 
23L, 184L, 184L, 184L, 184L, 176L, 176L, 176L, 176L, 12L, 12L, 
12L, 12L, 178L, 36L, 36L, 36L, 36L, 0L, 0L, 11L, 11L, 11L, 11L, 
718L, 718L, 718L, 718L, 47L, 47L, 47L, 42L, 42L, 210L, 210L, 
210L, 210L, 97L, 97L, 97L, 97L, 23L, 23L, 23L, 23L, 0L, 0L, 0L, 
0L, 110L, 9L, 9L, 9L, 9L, 30L, 30L, 30L, 4L, 4L, 200L, 200L, 
200L, 200L, 160L, 160L, 160L, 160L, 166L, 166L, 166L, 166L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 74L, 74L, 74L, 74L, 36L, 
36L, 36L, 47L, 47L, 47L, 47L, 58L, 58L, 58L, 58L, 43L, 43L, 43L, 
43L, 97L, 97L, 97L, 97L, 133L, 133L, 133L, 133L, 18L, 18L, 18L, 
123L, 123L, 123L, 123L, 5L, 5L, 5L, 5L, 128L, 128L, 128L, 15L, 
15L, 15L, 15L, 14L, 14L, 65L, 65L, 65L, 65L, 45L, 45L, 129L, 
129L, 129L, 129L, 140L, 140L, 140L, 140L, 0L, 0L, 0L, 18L, 18L, 
18L, 18L, 0L, 0L, 0L, 0L, 30L, 30L, 30L, 30L, 19L, 19L, 19L, 
19L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 96L, 96L, 96L, 96L, 88L, 
88L, 88L, 169L, 169L, 169L, 169L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 123L, 123L, 123L, 
1436L, 1436L, 1436L, 1436L, 0L, 0L, 0L, 0L, 43L, 43L, 43L, 6L, 
75L, 75L, 75L, 75L, 0L, 73L, 73L, 73L, 109L, 109L, 0L, 0L, 0L, 
0L, 115L, 115L, 115L, 110L, 110L, 110L, 110L, 119L, 95L, 95L, 
95L, 95L, 112L, 112L, 112L, 23L, 23L, 23L, 34L, 34L, 34L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 24L, 24L, 24L, 24L, 38L, 38L, 38L, 
38L, 29L, 29L, 29L, 29L, 20L, 20L, 20L, 20L), Species = structure(c(6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 1L, 1L, 6L, 6L, 6L, 6L, 1L, 1L, 
1L, 1L, 5L, 5L, 5L, 1L, 1L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 6L, 6L, 5L, 5L, 1L, 1L, 1L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 6L, 5L, 1L, 1L, 1L, 
5L, 5L, 5L, 5L, 6L, 6L, 6L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 1L, 1L, 1L, 1L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 2L, 2L, 2L, 6L, 6L, 6L, 6L, 3L, 3L, 3L, 3L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 1L, 1L, 1L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 
6L, 5L, 6L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, 5L, 5L, 1L, 
1L, 1L, 1L, 3L, 3L, 3L, 3L, 6L, 6L, 6L, 1L, 6L, 5L, 6L, 5L, 5L, 
5L, 5L, 5L, 6L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 
5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L), .Label = c("other deciduous tree", "other oak", 
"other plant", "other shrub", "Quercus petraea", "Quercus robur"
), class = "factor"), Tree_diameter = c(68.8, 10, 98.5, 97, 32.5, 
45.1, 847, 817, 569, 892, 57.3, 43.5, 120, 180, 74, 67, 69, 55, 
62, 71, 140, 111.4, 114.6, 167.1, 29, 46.5, 27.7, 40.1, 68, 45, 
60, 54, 104, 122, 85, 71, 81, 39.8, 43.6, 44.6, 22.6, 160, 156, 
20.1, 17.8, 15.6, 12.1, 37.3, 45.1, 42.8, 51.2, 48.1, 83.7, 77.9, 
80.2, 84.7, 81.8, 102.5, 75.5, 57.3, 0.3, 0.2, 0.3, 0.3, 70, 
36, 53, 44, 31.5, 27.1, 23.3, 22, 85, 69.4, 37.3, 82.9, 52.9, 
98.4, 64.6, 81.8, 19.9, 14.6, 196, 122, 118, 180, 58.6, 54.1, 
58, 61.5, 58.4, 40.6, 61, 68.6, 44.2, 45.2, 44.2, 117, 240, 210, 
310, 134, 64, 52.2, 32, 25, 22, 17, 57, 73.9, 37.1, 170, 114, 
127, 158, 147.4, 135.3, 122.9, 104.1, 263, 237, 322, 302, 175, 
182, 141, 155, 89, 41, 70, 83, 81.5, 29.3, 43.3, 141, 86.5, 82, 
114.5, 57, 42, 58, 64, 129, 127, 143, 125, 92, 68, 90, 24.5, 
20.1, 63.7, 39.8, 66.2, 112.4, 41.9, 43.8, 124.5, 94.1, 68.6, 
74.4, 23.6, 27.7, 22.9, 25.2, 59.2, 78, 79.3, 24.2, 54.7, 43, 
33.1, 56, 67, 62, 58, 306, 274, 56, 60, 72.5, 128.5, 22, 16, 
143, 103, 53, 130, 48.4, 69.8, 6.4, 18.6, 129.2, 41.7, 57.6, 
14, 75, 105, 44, 41.7, 30.2, 39.5, 24.2, 320, 352, 120.9, 108.3, 
53.2, 240, 274, 122, 85, 21, 52, 43, 38, 37, 219, 215, 216, 175, 
124, 133, 119, 39.2, 63, 94.9, 47.1, 126.6, 86.9, 94.7, 106.2, 
85.9, 49.7, 97.1, 55, 40.8, 79.3, 62.4, 62.4, 70, 115.9, 111.1, 
88.9, 80.3, 90.8, 36, 31, 37.5, 42.3, 73, 54, 75, 43, 50.3, 28.7, 
31.9, 159, 181.5, 149.7, 122, 143.6, 148, 145, 99, 47, 76.4, 
62.7, 49, 57.9, 54.8, 53.5, 88.8, 71.3, 101.9, 28, 32, 54, 54, 
169, 152, 160, 138, 90.8, 87.9, 77.4, 81.2, 91.7, 62.7, 50, 72.9, 
23.7, 58, 80.7, 73.7), Urbanisation_index = c(2L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 
4L, 4L, 2L, 2L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 
2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 3L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 
4L, 4L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 4L, 
4L, 4L, 4L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 1L, 1L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 4L, 4L, 4L, 4L, 3L, 2L, 2L, 2L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 
1L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 
1L, 1L, 1L), Stand_density_index = c(3L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 3L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 4L, 1L, 
1L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 2L, 3L, 3L, 
2L, 2L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L, 1L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 4L, 4L, 
3L, 3L, 3L, 3L, 4L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 4L, 
4L, 3L, 1L, 1L, 1L, 1L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 
4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 
3L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
3L, 3L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 4L, 4L, 4L, 4L, 3L, 3L, 
3L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
2L, 2L, 3L, 3L, 3L, 2L, 4L, 4L, 4L, 4L, 4L, 2L, 1L, 1L, 4L, 4L, 
2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 1L, 1L, 2L, 
1L, 1L, 1L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 
2L), Canopy_Index = c(85L, 85L, 85L, 75L, 45L, 25L, 75L, 65L, 
65L, 75L, 65L, 15L, 75L, 85L, 85L, 45L, 45L, 65L, 75L, 75L, 95L, 
95L, 95L, 95L, 95L, 55L, 85L, 65L, 85L, 65L, 95L, 85L, 85L, 85L, 
75L, 75L, 65L, 85L, 85L, 85L, 85L, 65L, 35L, 75L, 75L, 85L, 65L, 
55L, 65L, 45L, 45L, 95L, 85L, 85L, 85L, 65L, 95L, 85L, 95L, 95L, 
75L, 75L, 85L, 85L, 85L, 85L, 85L, 75L, 85L, 85L, 85L, 85L, 45L, 
75L, 75L, 65L, 75L, 35L, 35L, 75L, 85L, 85L, 65L, 75L, 85L, 75L, 
95L, 95L, 95L, 95L, 75L, 75L, 65L, 65L, 85L, 95L, 95L, 35L, 75L, 
65L, 85L, 95L, 95L, 55L, 75L, 75L, 75L, 85L, 65L, 95L, 75L, 75L, 
65L, 75L, 65L, 85L, 95L, 95L, 75L, 95L, 75L, 95L, 65L, 75L, 75L, 
85L, 85L, 65L, 95L, 65L, 65L, 75L, 75L, 65L, 65L, 65L, 65L, 65L, 
35L, 65L, 75L, 35L, 85L, 85L, 75L, 95L, 85L, 85L, 75L, 45L, 55L, 
35L, 35L, 25L, 25L, 75L, 65L, 95L, 85L, 75L, 85L, 85L, 75L, 75L, 
65L, 95L, 95L, 95L, 75L, 85L, 65L, 45L, 75L, 35L, 65L, 95L, 95L, 
95L, 95L, 95L, 65L, 75L, 45L, 35L, 75L, 95L, 95L, 85L, 75L, 65L, 
85L, 95L, 75L, 85L, 85L, 95L, 95L, 95L, 55L, 65L, 65L, 45L, 65L, 
85L, 35L, 95L, 85L, 85L, 75L, 85L, 95L, 85L, 95L, 75L, 65L, 65L, 
65L, 65L, 55L, 75L, 85L, 85L, 85L, 85L, 55L, 25L, 55L, 65L, 35L, 
75L, 25L, 35L, 85L, 95L, 85L, 55L, 75L, 75L, 75L, 75L, 65L, 85L, 
75L, 65L, 85L, 55L, 95L, 95L, 95L, 95L, 45L, 55L, 35L, 65L, 45L, 
75L, 75L, 55L, 65L, 65L, 75L, 65L, 95L, 95L, 95L, 45L, 15L, 85L, 
65L, 95L, 95L, 45L, 65L, 45L, 55L, 85L, 65L, 75L, 75L, 75L, 65L, 
75L, 35L, 75L, 75L, 75L, 75L, 25L, 45L, 45L, 35L, 85L, 95L, 85L, 
95L), Phenological_Index = c(2L, 4L, 2L, 2L, 4L, 4L, 2L, 2L, 
2L, 2L, 2L, 2L, 3L, 2L, 3L, 3L, 4L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 4L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 3L, 2L, 2L, 2L, 2L, 3L, 
1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 4L, 3L, 2L, 1L, 4L, 4L, 1L, 
1L, 1L, 1L, 1L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 
2L, 2L, 3L, 3L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
4L, 4L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 
3L, 3L, 3L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 2L, 3L, 3L, 
3L, 3L, 4L, 3L, 2L, 3L, 2L, 2L, 2L, 1L, 3L, 1L, 1L, 1L, 1L, 4L, 
2L, 4L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 3L, 3L, 2L, 
3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 3L, 1L, 3L, 4L, 3L, 3L, 
2L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 
1L, 1L, 4L, 4L, 4L, 3L, 4L, 3L, 3L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 
2L, 3L, 3L, 4L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L)), class = "data.frame", row.names = c(NA, 
-295L))

Upvotes: 4

Views: 654

Answers (2)

Ronak Shah
Ronak Shah

Reputation: 389135

Using dplyr we could first filter the Species and then for each Urbanisation_index we count the number of observations using n() and mean of Canopy_Index.

library(dplyr)

subset_leaf_1 %>%
   filter(Species == "Quercus petraea") %>%
   group_by(Urbanisation_index) %>%
   summarise(Species = "Quercus petraea",
             Obs_no = n(),
             Canopy_Index = mean(Canopy_Index))


#  Urbanisation_index Species         Obs_no Canopy_Index
#               <int> <chr>            <int>        <dbl>
#1                  1 Quercus petraea      6         61.7
#2                  2 Quercus petraea     17         75  
#3                  3 Quercus petraea     14         76.4
#4                  4 Quercus petraea     17         72.1

We can also do it in base R

df1 <- do.call(data.frame, aggregate(Canopy_Index~Urbanisation_index, 
             subset(subset_leaf_1, Species == "Quercus petraea"),
             function(x) c(Canopy_Index = mean(x), Obs_no = length(x))))

colnames(df1) <- c("Urbanisation_index", "Canopy_Index", "Obs_no")

Upvotes: 3

akrun
akrun

Reputation: 887501

With data.table, we convert the 'data.frame' to 'data.table' (setDT), specify the logical condition in i to subset the rows, grouped by 'Urbanisation_index', get the number of rows (.N) and the mean of 'Canopy_Index' along with the first value of 'Species'

library(data.table)
out <- setDT(subset_leaf_1)[Species == "Quercus petraea", 
        .(Species = first(Species),
          Obs_no = .N,
         Canopy_Index = mean(Canopy_Index)), by = Urbanisation_index]
setcolorder(out, c(2, 1, 3, 4))
out
#           Species Urbanisation_index Obs_no Canopy_Index
#1: Quercus petraea                  2     17     75.00000
#2: Quercus petraea                  4     17     72.05882
#3: Quercus petraea                  3     14     76.42857
#4: Quercus petraea                  1      6     61.66667

This can also be done in base R

tmp1 <- subset(subset_leaf_1, Species == "Quercus petraea")
by(tmp1, tmp1$Urbanisation_index, FUN = function(x) 
   data.frame(Obs_no = nrow(x), Canopy_Index = mean(x$Canopy_Index)))

Upvotes: 3

Related Questions