-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlifelist_formatter.R
More file actions
executable file
·61 lines (48 loc) · 1.81 KB
/
lifelist_formatter.R
File metadata and controls
executable file
·61 lines (48 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
suppressMessages(library(tidyverse))
suppressMessages(library(vwr))
args = commandArgs(trailingOnly=TRUE)
if(is.na(args[1])) stop('Supply path to lifelist plz.')
# args = c(ll_path='~/Downloads/Alice_Pokedex.csv')
#get lifelist
ll = suppressMessages(read_csv(args[1]))
#get ebird data
message('Getting eBird data')
req = httr::GET(paste0('http://ebird.org/ws1.1/ref/taxa/ebird?cat=species,',
'hybrid&fmt=json&locale=en_US'))
txt = httr::content(req, as="text")
ebrd = jsonlite::fromJSON(txt, simplifyDataFrame=TRUE, flatten=TRUE)
format_lifelist = function(ll){
renames = c()
for(i in 1:nrow(ll)){
cn = ll$common_name[i]
if(! cn %in% ebrd$comName){
ldists = levenshtein.distance(cn, ebrd$comName)
closest = names(ldists[order(ldists)][1])
ll$common_name[i] = closest
renames = append(renames, cn)
names(renames)[length(renames)] = closest
}
}
ll = ll %>%
select(common_name, date, location, notes) %>%
rename(comName=common_name) %>%
distinct(comName, .keep_all=TRUE)
ll = ebrd %>%
select(sciName, comName, speciesCode, familyComName,
familySciName) %>%
right_join(ll, by='comName') %>%
arrange(familySciName, sciName) %>%
select(comName, sciName, familySciName, familyComName, speciesCode,
date, location, notes) %>%
mutate(
date=format(as.Date(date, format='%m/%e/%Y'), '%Y/%m/%d'),
notes=ifelse(is.na(notes), '', notes))
write.csv(ll, args[1], row.names=FALSE)
cnt = sum(!is.na(ll$sciName))
cat(paste0('\nSpecies count: ', cnt, '\n'))
message('Renamed the following:\n')
for(j in 1:length(renames)){
cat(paste0(unname(renames[j]), ' -> ', names(renames[j]), '\n'))
}
}
format_lifelist(ll)