PFW
Tools for Filtering and Processing Data from Project FeederWatch
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.8%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
Repository
Tools for Filtering and Processing Data from Project FeederWatch
Basic Info
- Host: GitHub
- Owner: ropensci
- License: gpl-3.0
- Language: R
- Default Branch: main
- Homepage: https://ropensci.github.io/PFW/
- Size: 33 MB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 0
- Releases: 0
Created about 1 year ago
· Last pushed 10 months ago
Metadata Files
Readme
Changelog
Contributing
License
Code of conduct
Codemeta
README.Rmd
--- output: github_document --- # PFW: Filtering and Processing Data from Project FeederWatch[](https://www.repostatus.org/#active) [](http://www.gnu.org/licenses/gpl-3.0) [](https://CRAN.R-project.org/package=PFW) [](https://github.com/ropensci/PFW/actions/workflows/R-CMD-check.yaml) [](https://app.codecov.io/gh/ropensci/PFW) [](https://github.com/ropensci/software-review/issues/698) ## Overview `PFW` is an R package designed for easy filtering, preparation, and management of data from [Project FeederWatch](https://feederwatch.org/). Project FeederWatch is a community-driven project initiated in the 1980s and run by the [Cornell Lab of Ornithology](https://www.birds.cornell.edu/home) and [Birds Canada](https://www.birdscanada.org/) that compiles bird observations from thousands of "backyards, nature centers, community areas, and other locales" across North America. Project FeederWatch data is easy to access, but can often be tricky to work with; `PFW` serves to simplify and streamline the use of this data. Included in `PFW` are tools for taxonomic rollup, filtering by survey characteristics (species, state, etc.), merging in site metadata, and zerofilling for presence/absence modeling.  *Figure from Bonter & Greig (2021), licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).* ## Installation `PFW` can be installed using: ```{r, eval = FALSE} install.packages("PFW") ``` ## Vignette Background and details on using `PFW` to filter and process Project FeederWatch data are outlined in the [vignette](https://ropensci.github.io/PFW/articles/PFW.html). ## Citation To cite `PFW` in publications, use: > Maron, M. W. (2025). PFW: Filtering and Processing Data from Project FeederWatch. > R package version 0.1.0. https://github.com/ropensci/PFW You can also run ```{r, eval = FALSE} citation("PFW") ``` in R when `PFW` is loaded. ## Quick Start This is a simple example which shows you how to do basic Project FeederWatch importing, filtering, zerofilling, and site data attachment. Here, we'll load the example dataset and filter it for Song Sparrow, Dark-eyed Junco, and Spotted Towhee from Washington and Oregon between 2022 and 2024 in November-February. Then, we'll zerofill that data and attach our site metadata: ```{r, eval = FALSE} library(PFW) # Load in the included example dataset data <- pfw_example # If you were using your own selection of PFW data, # this would be pfw_import() instead. # pfw_import() creates and defaults to "/data-raw" in a local directory, # but will accept a different filepath. # Create a list of study species species_list <- c("Song Sparrow", "Dark-eyed Junco", "Spotted Towhee") # Create a list of study regions region_list <- c("Washington", "Oregon") # Filter data by species and region, from 2022–2024 during November-February data_filtered <- pfw_filter(data, region = region_list, species = species_list, year = 2022:2024, month = 11:2, # pfw_date(), which is called within pfw_filter(), # will appropriately wrap this around the end of the year. valid = TRUE, # TRUE by default rollup = TRUE # TRUE by default ) # Output: # 2 regions successfully filtered. # Date filtering complete. # Species roll-up complete. 36 ambiguous records removed. # 3 species successfully filtered. # Filtering complete. 23538 records remaining. # View the filters that were applied pfw_attr(data_filtered) # Output: # Filters applied to this dataset: # # - Filter type: region # Values: Washington, Oregon # # - Filter type: date # year : 2022, 2023, 2024 # month : 11, 12, 1, 2 # # - Filter type: rollup # Values: TRUE # # - Filter type: valid # Values: TRUE # # - Filter type: species # Values: song sparrow, dark-eyed junco, spotted towhee # Zerofill missing species/survey instance combos data_zf <- pfw_zerofill(data_filtered) # Attach site description metadata # Replace "path/sitedata.csv" with the actual path to the downloaded file data_full <- pfw_sitedata(data_zf, path = "path/sitedata.csv") # If the file does not exist at that path, pfw_sitedata will # download it there from the Project FeederWatch website. # Alternatively, you can manually download the site description file from: # https://feederwatch.org/explore/raw-dataset-requests/ ``` ## Feedback Have feedback? Please submit any bugs, typos, or improvements as an [issue](https://github.com/ropensci/PFW/issues) or as a [pull request](https://github.com/ropensci/PFW/pulls)! Your insights help improve `PFW`. Please note that `PFW` is released with a [Contributor Code of Conduct](https://ropensci.github.io/PFW/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. ## Acknowledgements `PFW` was built from code originally developed for Project FeederWatch data preparation in Maron et al. (2025). While the function scripts in this package were created specifically for PFW, the code they are based on benefited greatly from examples and code snippets provided by Emma Greig, who passed away prior to the package's creation.
Owner
- Name: rOpenSci
- Login: ropensci
- Kind: organization
- Email: info@ropensci.org
- Location: Berkeley, CA
- Website: https://ropensci.org/
- Twitter: rOpenSci
- Repositories: 307
- Profile: https://github.com/ropensci
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "PFW",
"description": "Provides tools to import, clean, filter, and prepare Project FeederWatch data for analysis. Includes functions for taxonomic rollup, easy filtering, zerofilling, merging in site metadata, and more. Project FeederWatch data comes from <https://feederwatch.org/explore/raw-dataset-requests/>.",
"name": "PFW: Filtering and Processing Data from Project FeederWatch",
"relatedLink": "https://ropensci.github.io/PFW/",
"codeRepository": "https://github.com/ropensci/PFW",
"issueTracker": "https://github.com/ropensci/PFW/issues",
"license": "https://spdx.org/licenses/GPL-3.0",
"version": "0.1.0",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.4.3 (2025-02-28 ucrt)",
"author": [
{
"@type": "Person",
"givenName": [
"Mason",
"W."
],
"familyName": "Maron",
"email": "mwmaron2@illinois.edu",
"@id": "https://orcid.org/0000-0001-7170-9373"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": [
"Mason",
"W."
],
"familyName": "Maron",
"email": "mwmaron2@illinois.edu",
"@id": "https://orcid.org/0000-0001-7170-9373"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"version": ">= 3.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
},
{
"@type": "SoftwareApplication",
"identifier": "purrr",
"name": "purrr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=purrr"
},
{
"@type": "SoftwareApplication",
"identifier": "withr",
"name": "withr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=withr"
},
{
"@type": "SoftwareApplication",
"identifier": "knitr",
"name": "knitr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knitr"
},
{
"@type": "SoftwareApplication",
"identifier": "rmarkdown",
"name": "rmarkdown",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rmarkdown"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "dplyr",
"name": "dplyr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=dplyr"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "lubridate",
"name": "lubridate",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=lubridate"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "httr2",
"name": "httr2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=httr2"
},
"4": {
"@type": "SoftwareApplication",
"identifier": "xml2",
"name": "xml2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=xml2"
},
"5": {
"@type": "SoftwareApplication",
"identifier": "stats",
"name": "stats"
},
"6": {
"@type": "SoftwareApplication",
"identifier": "utils",
"name": "utils"
},
"7": {
"@type": "SoftwareApplication",
"identifier": "curl",
"name": "curl",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=curl"
},
"8": {
"@type": "SoftwareApplication",
"identifier": "stringdist",
"name": "stringdist",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=stringdist"
},
"9": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 4.1.0"
},
"SystemRequirements": null
},
"fileSize": "2870.051KB",
"citation": [
{
"@type": "SoftwareSourceCode",
"datePublished": "2025",
"author": [
{
"@type": "Person",
"givenName": [
"Mason",
"W."
],
"familyName": "Maron"
}
],
"name": "PFW: Filtering and Processing Data from Project FeederWatch",
"url": "https://github.com/ropensci/PFW",
"description": "R package version 0.1.0"
}
],
"releaseNotes": "https://github.com/ropensci/PFW/blob/master/NEWS.md",
"readme": "https://github.com/ropensci/PFW/blob/main/README.md",
"contIntegration": [
"https://github.com/ropensci/PFW/actions/workflows/R-CMD-check.yaml",
"https://app.codecov.io/gh/ropensci/PFW"
],
"developmentStatus": "https://www.repostatus.org/#active",
"review": {
"@type": "Review",
"url": "https://github.com/ropensci/software-review/issues/698",
"provider": "https://ropensci.org"
}
}
GitHub Events
Total
- Push event: 21
Last Year
- Push event: 21
Packages
- Total packages: 1
-
Total downloads:
- cran 396 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 1
- Total maintainers: 1
cran.r-project.org: PFW
Filtering and Processing Data from Project FeederWatch
- Homepage: https://github.com/ropensci/PFW
- Documentation: http://cran.r-project.org/web/packages/PFW/PFW.pdf
- License: GPL-3
-
Latest release: 0.1.0
published 12 months ago
Rankings
Dependent packages count: 26.0%
Dependent repos count: 32.0%
Average: 48.0%
Downloads: 86.1%
Maintainers (1)
Last synced:
10 months ago
Dependencies
.github/workflows/test-coverage.yaml
actions
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- codecov/codecov-action v5 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/R-CMD-check.yaml
actions
- actions/checkout v4 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/pkgdown.yaml
actions
- JamesIves/github-pages-deploy-action v4.5.0 composite
- actions/checkout v4 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
DESCRIPTION
cran
- R >= 4.1.0 depends
- data.table * imports
- dplyr * imports
- lubridate * imports
- rvest * imports
- stats * imports
- utils * imports
- purrr * suggests
- testthat >= 3.0.0 suggests
- withr * suggests
[](https://www.repostatus.org/#active)
[](http://www.gnu.org/licenses/gpl-3.0)
[](https://CRAN.R-project.org/package=PFW)
[](https://github.com/ropensci/PFW/actions/workflows/R-CMD-check.yaml)
[](https://app.codecov.io/gh/ropensci/PFW)
[](https://github.com/ropensci/software-review/issues/698)
## Overview
`PFW` is an R package designed for easy filtering, preparation,
and management of data from [Project FeederWatch](https://feederwatch.org/).
Project FeederWatch is a community-driven project initiated in the 1980s
and run by the [Cornell Lab of Ornithology](https://www.birds.cornell.edu/home) and [Birds Canada](https://www.birdscanada.org/)
that compiles bird observations from thousands of "backyards, nature centers,
community areas, and other locales" across North America. Project FeederWatch data is easy to access,
but can often be tricky to work with; `PFW` serves to simplify and streamline the use of this data.
Included in `PFW` are tools for taxonomic rollup, filtering by survey characteristics
(species, state, etc.), merging in site metadata, and zerofilling for presence/absence modeling.

*Figure from Bonter & Greig (2021), licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).*
## Installation
`PFW` can be installed using:
```{r, eval = FALSE}
install.packages("PFW")
```
## Vignette
Background and details on using `PFW` to filter and process Project FeederWatch data are outlined in the [vignette](https://ropensci.github.io/PFW/articles/PFW.html).
## Citation
To cite `PFW` in publications, use:
> Maron, M. W. (2025). PFW: Filtering and Processing Data from Project FeederWatch.
> R package version 0.1.0. https://github.com/ropensci/PFW
You can also run
```{r, eval = FALSE}
citation("PFW")
```
in R when `PFW` is loaded.
## Quick Start
This is a simple example which shows you how to do basic Project FeederWatch importing, filtering, zerofilling, and site data attachment.
Here, we'll load the example dataset and filter it for Song Sparrow, Dark-eyed Junco, and Spotted Towhee from Washington
and Oregon between 2022 and 2024 in November-February. Then, we'll zerofill that data and attach our site metadata:
```{r, eval = FALSE}
library(PFW)
# Load in the included example dataset
data <- pfw_example # If you were using your own selection of PFW data,
# this would be pfw_import() instead.
# pfw_import() creates and defaults to "/data-raw" in a local directory,
# but will accept a different filepath.
# Create a list of study species
species_list <- c("Song Sparrow", "Dark-eyed Junco", "Spotted Towhee")
# Create a list of study regions
region_list <- c("Washington", "Oregon")
# Filter data by species and region, from 2022–2024 during November-February
data_filtered <- pfw_filter(data,
region = region_list,
species = species_list,
year = 2022:2024,
month = 11:2, # pfw_date(), which is called within pfw_filter(),
# will appropriately wrap this around the end of the year.
valid = TRUE, # TRUE by default
rollup = TRUE # TRUE by default
)
# Output:
# 2 regions successfully filtered.
# Date filtering complete.
# Species roll-up complete. 36 ambiguous records removed.
# 3 species successfully filtered.
# Filtering complete. 23538 records remaining.
# View the filters that were applied
pfw_attr(data_filtered)
# Output:
# Filters applied to this dataset:
#
# - Filter type: region
# Values: Washington, Oregon
#
# - Filter type: date
# year : 2022, 2023, 2024
# month : 11, 12, 1, 2
#
# - Filter type: rollup
# Values: TRUE
#
# - Filter type: valid
# Values: TRUE
#
# - Filter type: species
# Values: song sparrow, dark-eyed junco, spotted towhee
# Zerofill missing species/survey instance combos
data_zf <- pfw_zerofill(data_filtered)
# Attach site description metadata
# Replace "path/sitedata.csv" with the actual path to the downloaded file
data_full <- pfw_sitedata(data_zf, path = "path/sitedata.csv")
# If the file does not exist at that path, pfw_sitedata will
# download it there from the Project FeederWatch website.
# Alternatively, you can manually download the site description file from:
# https://feederwatch.org/explore/raw-dataset-requests/
```
## Feedback
Have feedback? Please submit any bugs, typos, or improvements as an [issue](https://github.com/ropensci/PFW/issues) or as a [pull request](https://github.com/ropensci/PFW/pulls)!
Your insights help improve `PFW`.
Please note that `PFW` is released with a [Contributor Code of Conduct](https://ropensci.github.io/PFW/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.
## Acknowledgements
`PFW` was built from code originally developed for Project FeederWatch data preparation in Maron et al. (2025).
While the function scripts in this package were created specifically for PFW, the code they are based on
benefited greatly from examples and code snippets provided by Emma Greig, who passed away prior to the
package's creation.