Data tally procedures and forms are presented in this document: PROTOCOLLO DI RILIEVO CANALI ESCA_V2.pdf
library(tidyverse)
library(googlesheets)
suppressMessages(library(dplyr))
# URL del tabellone https://docs.google.com/spreadsheets/d/1Wh0gII8TdrOAcPP4iOK3idmK_BEcZF_35xsoaQobTuU/edit#gid=607028096
input.gs <-
"FormsInserimentoDati_Arzana2018_2" %T>%
gs_ls %>%
gs_title
Auto-refreshing stale OAuth token.
Sheet successfully identified: "FormsInserimentoDati_Arzana2018_2"
input.gs %>%
gs_ws_ls
[1] "ISSUES" "Intestazione" "Scheda_1" "Scheda_2"
[5] "Rotelle"
ISSUES
Intestazione
Scheda_1
Scheda_2
Rotelle
for(s in c("Intestazione", "Scheda_1", "Scheda_2", "Rotelle" )) {
assign(s , gs_read(input.gs, ws = s))
}
Accessing worksheet titled 'Intestazione'.
Parsed with column specification:
cols(
complesso = col_character(),
data = col_character(),
rilevatori = col_character(),
id_gradone = col_character(),
progr_gradone = col_character(),
id_fusto_campione = col_integer(),
specie = col_character(),
d_130 = col_integer(),
h_ipso = col_number(),
lung_atterrato = col_number(),
peso_ramaglia = col_integer(),
fascine = col_character()
)
Accessing worksheet titled 'Scheda_1'.
Parsed with column specification:
cols(
id_fusto_campione = col_integer(),
progressivo_foglio = col_integer(),
distanza_suolo = col_character(),
diam_sezione = col_integer(),
id_asta_secondaria = col_character(),
stato_palco = col_character(),
numero_rami = col_character(),
diam_ramo_grosso = col_integer()
)
Accessing worksheet titled 'Scheda_2'.
Parsed with column specification:
cols(
id_fusto_campione = col_integer(),
progressivo_foglio = col_integer(),
id_asta_secondaria = col_character(),
dist_da_biforcazione = col_character(),
diam_sezione = col_character()
)
Accessing worksheet titled 'Rotelle'.
Parsed with column specification:
cols(
id_fusto_campione = col_integer(),
peso_rotelle = col_number(),
dist_rot_id0 = col_character(),
dist_rot_id1 = col_character(),
dist_rot_id2 = col_number(),
dist_rot_id3 = col_number(),
dist_rot_id4 = col_number(),
dist_rot_id5 = col_number(),
dist_rot_id6 = col_number()
)
Intestazione <- Intestazione %>%
fill(complesso)
Scheda_1 <- Scheda_1 %>%
fill(id_fusto_campione, progressivo_foglio) %>%
mutate(distanza_suolo =
parse_double(distanza_suolo,
locale = locale(decimal_mark = ",")))
Scheda_2 <- Scheda_2 %>%
fill(id_fusto_campione, progressivo_foglio, id_asta_secondaria)
Basic statistics
library(magrittr)
numbers_only <- function(x) !grepl("\\D", x)
cat("Foglio: 'Intestazione'\n")
Foglio: 'Intestazione'
Intestazione %T>%
{print(paste("N. di fusti campione - Totale (acquisito):", length(unique(Intestazione$id_fusto_campione))))} %>%
group_by(id_gradone, specie) %>%
summarise( n_FC = n()) %>%
spread(specie, n_FC) %>%
arrange(ifelse(numbers_only(.$id_gradone), str_sub(paste0("000", .$id_gradone), -3), .$id_gradone)) %>% hux(add_colnames = T)
[1] "N. di fusti campione - Totale (acquisito): 73"
| id_gradone |
M |
R |
| 1 |
1 |
|
| 3 |
1 |
|
| 4 |
1 |
|
| 5 |
1 |
|
| 6 |
1 |
|
| 8 |
1 |
|
| 9 |
1 |
|
| 10 |
1 |
|
| 14 |
3 |
|
| 15 |
|
3 |
| 16 |
|
2 |
| 17 |
|
1 |
| 19 |
1 |
|
| 20 |
1 |
|
| 21 |
2 |
|
| 22 |
2 |
|
| 23 |
1 |
|
| 24 |
2 |
|
| 25 |
1 |
|
| 26 |
1 |
|
| 27 |
1 |
|
| 29 |
1 |
|
| 32 |
2 |
|
| 35 |
2 |
|
| 36 |
1 |
|
| 38 |
2 |
|
| 40 |
1 |
|
| 42 |
|
1 |
| 43 |
1 |
|
| 45 |
|
2 |
| 49 |
2 |
|
| 51 |
1 |
|
| 53 |
1 |
|
| 55 |
1 |
|
| 56 |
1 |
|
| 61 |
|
3 |
| 63 |
|
1 |
| 64 |
|
1 |
| 65 |
|
2 |
| 72 |
|
1 |
| 73 |
|
1 |
| 79 |
|
2 |
| 84 |
|
1 |
| 86 |
|
2 |
| 89 |
|
1 |
| 91 |
|
1 |
| 95 |
|
1 |
| 96 |
|
1 |
| 112 |
|
2 |
| B |
|
1 |
| F |
3 |
1 |
Intestazione %>%
group_by(specie) %>%
summarise(n_FC = n(), min_dbh = min(.$d_130), max_dbh = max(.$d_130)) %>%
hux(add_colnames = T)
| specie |
n_FC |
min_dbh |
max_dbh |
| M |
42 |
11 |
51 |
| R |
31 |
11 |
51 |
Distances from ground should be stricly increasing
library(huxtable)
Scheda_1 %>%
rowid_to_column %>%
group_by(id_fusto_campione) %>%
mutate(dist_succ = lead(distanza_suolo, 1), tree_row = row_number()) %>%
select(1:3, distanza_suolo, tree_row, dist_succ) %>%
filter(tree_row >3 & distanza_suolo >= dist_succ) %>%
hux(add_colnames = TRUE) %>%
set_align( every(), 1:3, 'center') %>%
set_caption('Rows after wich distance decreases') %>%
theme_plain()
Rows after wich distance decreases
| rowid |
id_fusto_campione |
progressivo_foglio |
distanza_suolo |
tree_row |
dist_succ |
| 3899 |
30 |
1 |
6.05 |
29 |
5.9 |
| 3943 |
31 |
1 |
6.35 |
26 |
5.55 |
| 3973 |
31 |
2 |
12.8 |
56 |
11.9 |
| 4042 |
32 |
1 |
10.8 |
53 |
10.8 |
| 4276 |
41 |
2 |
12.8 |
52 |
12 |
| 4295 |
43 |
1 |
9 |
8 |
3.4 |
| 4541 |
45 |
2 |
22.8 |
65 |
22.3 |
| 4555 |
45 |
2 |
26.7 |
79 |
16.8 |
| 4619 |
46 |
1 |
15.6 |
42 |
12.8 |
| 4680 |
46 |
2 |
28.4 |
103 |
18.4 |
| 4723 |
48 |
1 |
14.3 |
41 |
4.55 |
| 4746 |
48 |
2 |
19.9 |
64 |
10 |
| 4749 |
48 |
2 |
20.3 |
67 |
10.5 |
| 4889 |
52 |
3 |
24.2 |
109 |
23.4 |
| 4951 |
53 |
2 |
20.7 |
61 |
10.9 |
| 5031 |
55 |
2 |
19.6 |
62 |
18.9 |
| 5089 |
56 |
1 |
10.9 |
27 |
10.6 |
| 5123 |
56 |
2 |
20.3 |
61 |
10.6 |
| 5209 |
57 |
2 |
29.6 |
62 |
20.7 |
| 5290 |
58 |
1 |
19.9 |
56 |
17.1 |
| 5313 |
58 |
1 |
23.3 |
79 |
21.9 |
| 5499 |
61 |
2 |
16.4 |
63 |
16.2 |
| 5539 |
61 |
3 |
23.9 |
103 |
23.8 |
| 5705 |
63 |
2 |
178 |
52 |
18.1 |
| 5714 |
63 |
2 |
210 |
61 |
20.7 |
| 5804 |
64 |
2 |
21.9 |
70 |
2.15 |
cat(paste("Analysis completed at:", Sys.time()))
Analysis completed at: 2018-09-08 00:57:20
LS0tDQp0aXRsZTogIlN0ZW0gYW5hbHlzaXMgLSBwcmVwcm9jZXNzaW5nIg0Kc3VidGl0bGU6ICJKdXN0IGZpcnN0IGNoZWNrcyINCmF1dGhvcjoNCi0gbmFtZTogUm9iZXJ0byBTY290dGkNCiAgYWZmaWxpYXRpb246IE51b3JvRm9yZXN0cnlTY2hvb2wNCmFic3RyYWN0OiB8DQogIFByZXByb2Nlc3NpbmcgaW5jbHVkZXMgYWxsIHN0ZXBzIGZyb20gYWNjZXNzaW5nIHJhdyBpbnB1dCBvbiBHb29nbGVTaGVldHMgdG8gdGhlIHByb2R1Y3Rpb24gb2YgYSB2YWxpZGF0ZWQgU1FMaXRlIERCLiAgDQogIFRoaXMgdmVyc2lvbiBzdG9wcyBwcm9jZXNzaW5nIGFmdGVyIGEgZmlyc3QgY2hlY2sgb24gaW5wdXQgZGF0YS4gIA0KICBSZXBvOiBodHRwczovL2dpdGxhYi5jb20vTnVvcm9Gb3Jlc3RyeVNjaG9vbC9BcnphbmFfUGluZXNVdGlsaXphdGlvbl9NYXJvbmdpdTIwMTcNCmtleXdvcmRzOiAiZGF0YSB3cmFuZ2xpbmciDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclQiAlZCwgJVknKWAiDQoNCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KIyBZQU1MIGZyb20gaHR0cDovL3N2bWlsbGVyLmNvbS9ibG9nLzIwMTYvMDIvc3ZtLXItbWFya2Rvd24tbWFudXNjcmlwdC8NCi0tLQ0KDQpEYXRhIHRhbGx5IHByb2NlZHVyZXMgYW5kIGZvcm1zIGFyZSBwcmVzZW50ZWQgaW4gdGhpcyBkb2N1bWVudDoNCltQUk9UT0NPTExPIERJIFJJTElFVk8gQ0FOQUxJIEVTQ0FfVjIucGRmXShodHRwczovL2RyaXZlLmdvb2dsZS5jb20vZHJpdmUvZm9sZGVycy8wQnc0My1rZURmSmZGV2xWRVREbERXbXRWZUVrKQ0KDQpgYGB7ciBBY2Nlc3NHU30NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShnb29nbGVzaGVldHMpDQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkoZHBseXIpKQ0KDQojIFVSTCBkZWwgdGFiZWxsb25lIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFXaDBnSUk4VGRyT0FjUFA0aU9LM2lkbUtfQkVjWkZfMzV4c29hUW9iVHVVL2VkaXQjZ2lkPTYwNzAyODA5Ng0KaW5wdXQuZ3MgPC0gDQogICJGb3Jtc0luc2VyaW1lbnRvRGF0aV9BcnphbmEyMDE4XzIiICAlVD4lDQogIGdzX2xzICU+JQ0KICBnc190aXRsZQ0KDQppbnB1dC5ncyAlPiUNCiAgZ3Nfd3NfbHMNCg0KZm9yKHMgaW4gYygiSW50ZXN0YXppb25lIiwgIlNjaGVkYV8xIiwgIlNjaGVkYV8yIiwgIlJvdGVsbGUiICApKSB7DQogIGFzc2lnbihzICwgICBnc19yZWFkKGlucHV0LmdzLCB3cyA9IHMpKQ0KfQ0KDQpJbnRlc3RhemlvbmUgPC0gSW50ZXN0YXppb25lICU+JSANCiAgZmlsbChjb21wbGVzc28pDQpTY2hlZGFfMSA8LSBTY2hlZGFfMSAlPiUgDQogIGZpbGwoaWRfZnVzdG9fY2FtcGlvbmUsIHByb2dyZXNzaXZvX2ZvZ2xpbykgJT4lDQogIG11dGF0ZShkaXN0YW56YV9zdW9sbyA9IA0KICAgICAgICAgICBwYXJzZV9kb3VibGUoZGlzdGFuemFfc3VvbG8sDQogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGUoZGVjaW1hbF9tYXJrID0gIiwiKSkpDQpTY2hlZGFfMiA8LSBTY2hlZGFfMiAlPiUgDQogIGZpbGwoaWRfZnVzdG9fY2FtcGlvbmUsIHByb2dyZXNzaXZvX2ZvZ2xpbywgaWRfYXN0YV9zZWNvbmRhcmlhKQ0KDQpgYGANCg0KIyBCYXNpYyBzdGF0aXN0aWNzDQoNCmBgYHtyfQ0KbGlicmFyeShtYWdyaXR0cikNCm51bWJlcnNfb25seSA8LSBmdW5jdGlvbih4KSAhZ3JlcGwoIlxcRCIsIHgpDQoNCmNhdCgiRm9nbGlvOiAnSW50ZXN0YXppb25lJ1xuIikNCkludGVzdGF6aW9uZSAlVD4lDQogIHtwcmludChwYXN0ZSgiTi4gZGkgZnVzdGkgY2FtcGlvbmUgLSBUb3RhbGUgKGFjcXVpc2l0byk6IiwgbGVuZ3RoKHVuaXF1ZShJbnRlc3RhemlvbmUkaWRfZnVzdG9fY2FtcGlvbmUpKSkpfSAlPiUNCiAgZ3JvdXBfYnkoaWRfZ3JhZG9uZSwgc3BlY2llKSAlPiUgDQogIHN1bW1hcmlzZSggbl9GQyA9IG4oKSkgJT4lIA0KICBzcHJlYWQoc3BlY2llLCBuX0ZDKSAlPiUgDQogIGFycmFuZ2UoaWZlbHNlKG51bWJlcnNfb25seSguJGlkX2dyYWRvbmUpLCBzdHJfc3ViKHBhc3RlMCgiMDAwIiwgLiRpZF9ncmFkb25lKSwgLTMpLCAuJGlkX2dyYWRvbmUpKSAlPiUgaHV4KGFkZF9jb2xuYW1lcyA9IFQpDQpJbnRlc3RhemlvbmUgJT4lDQogIGdyb3VwX2J5KHNwZWNpZSkgJT4lDQogIHN1bW1hcmlzZShuX0ZDID0gbigpLCBtaW5fZGJoID0gbWluKC4kZF8xMzApLCBtYXhfZGJoID0gbWF4KC4kZF8xMzApKSAlPiUNCiAgaHV4KGFkZF9jb2xuYW1lcyA9IFQpDQoNCmBgYA0KDQoNCg0KIyBEaXN0YW5jZXMgZnJvbSBncm91bmQgc2hvdWxkIGJlIHN0cmljbHkgaW5jcmVhc2luZw0KDQpgYGB7ciBjaGVjazF9DQpsaWJyYXJ5KGh1eHRhYmxlKQ0KDQpTY2hlZGFfMSAlPiUNCiAgcm93aWRfdG9fY29sdW1uICU+JQ0KICBncm91cF9ieShpZF9mdXN0b19jYW1waW9uZSkgJT4lDQogIG11dGF0ZShkaXN0X3N1Y2MgPSBsZWFkKGRpc3RhbnphX3N1b2xvLCAxKSwgdHJlZV9yb3cgPSByb3dfbnVtYmVyKCkpICU+JQ0KICBzZWxlY3QoMTozLCBkaXN0YW56YV9zdW9sbywgdHJlZV9yb3csIGRpc3Rfc3VjYykgJT4lDQogIGZpbHRlcih0cmVlX3JvdyA+MyAmIGRpc3RhbnphX3N1b2xvID49IGRpc3Rfc3VjYykgJT4lDQogIGh1eChhZGRfY29sbmFtZXMgPSBUUlVFKSAlPiUNCiAgc2V0X2FsaWduKCBldmVyeSgpLCAxOjMsICdjZW50ZXInKSAgJT4lDQogIHNldF9jYXB0aW9uKCdSb3dzIGFmdGVyIHdpY2ggZGlzdGFuY2UgZGVjcmVhc2VzJykgJT4lDQogIHRoZW1lX3BsYWluKCkNCg0KY2F0KHBhc3RlKCJBbmFseXNpcyBjb21wbGV0ZWQgYXQ6IiwgU3lzLnRpbWUoKSkpDQoNCmBgYA0KDQoNCmBgYHtyIGVjaG89RkFMU0V9DQojIHJtYXJrZG93bjo6cmVuZGVyKCJTdGVtQW5hbHlzaXMtUHJlUHJvY2Vzc2luZy5SbWQiKQ0KIyBtYXJrZG93bjo6cnB1YnNVcGxvYWQoIlN0ZW0gYW5hbHlzaXMgLSBkYXRhIHdyYW5nbGluZyIsICJTdGVtQW5hbHlzaXMtUHJlUHJvY2Vzc2luZy5uYi5odG1sIikNCmBgYA0KDQo=