fundr includes reference tables for common gift/ask levels and wealth rating levels, plus helpers to bucket numeric values into consistent labels. The bucketing functions support presets for different organization sizes, from small community foundations to large universities. ## Gift Level Bucketing
The fundr_gift_levels table contains comprehensive
thresholds from $1 to $150M+:
library(fundr)
# View all available thresholds
fundr_gift_levels
#> ask_amount giving_level ask_bucket
#> 1 0.0e+00 No Amount No Amount
#> 2 1.0e-02 $1+ Less than $100
#> 3 1.0e+02 $100+ $100 to $249
#> 4 2.5e+02 $250+ $250 to $499
#> 5 5.0e+02 $500+ $500 to $999
#> 6 1.0e+03 $1,000+ $1K to $2.4K
#> 7 2.5e+03 $2,500+ $2.5K to $4.9K
#> 8 5.0e+03 $5,000+ $5K to $9.9K
#> 9 1.0e+04 $10,000+ $10K to $24.9K
#> 10 2.5e+04 $25,000+ $25K to $49.9K
#> 11 5.0e+04 $50,000+ $50K to $99.9K
#> 12 1.0e+05 $100,000+ $100K to $249K
#> 13 2.5e+05 $250,000+ $250K to $499K
#> 14 5.0e+05 $500,000+ $500K to $749K
#> 15 7.5e+05 $750,000+ $750K to $999K
#> 16 1.0e+06 $1,000,000+ $1M to $2.49M
#> 17 2.5e+06 $2,500,000+ $2.5M to $4.9M
#> 18 5.0e+06 $5,000,000+ $5M to $9.9M
#> 19 1.0e+07 $10,000,000+ $10M to $24.9M
#> 20 2.5e+07 $25,000,000+ $25M to $49.9M
#> 21 5.0e+07 $50,000,000+ $50M to $99.9M
#> 22 1.0e+08 $100,000,000+ $100M to $149M
#> 23 1.5e+08 $150,000,000+ $150M+Using Presets
Different organizations have different gift level needs. Use
gift_levels() to get a preset appropriate for your
shop:
# Small shop: annual fund focus ($1 to $100K)
gift_levels("small")
#> ask_amount giving_level ask_bucket
#> 1 0.0e+00 No Amount No Amount
#> 2 1.0e-02 $1+ Less than $100
#> 3 1.0e+02 $100+ $100 to $249
#> 4 2.5e+02 $250+ $250 to $499
#> 5 5.0e+02 $500+ $500 to $999
#> 6 1.0e+03 $1,000+ $1K to $2.4K
#> 7 2.5e+03 $2,500+ $2.5K to $4.9K
#> 8 5.0e+03 $5,000+ $5K to $9.9K
#> 9 1.0e+04 $10,000+ $10K to $24.9K
#> 10 2.5e+04 $25,000+ $25K to $49.9K
#> 11 5.0e+04 $50,000+ $50K to $99.9K
#> 12 1.0e+05 $100,000+ $100K to $249K
# Medium shop: leadership/major gifts ($1K to $1M)
gift_levels("medium")
#> ask_amount giving_level ask_bucket
#> 1 0.0e+00 No Amount No Amount
#> 2 1.0e-02 $1+ Less than $100
#> 3 1.0e+03 $1,000+ $1K to $2.4K
#> 4 5.0e+03 $5,000+ $5K to $9.9K
#> 5 1.0e+04 $10,000+ $10K to $24.9K
#> 6 2.5e+04 $25,000+ $25K to $49.9K
#> 7 5.0e+04 $50,000+ $50K to $99.9K
#> 8 1.0e+05 $100,000+ $100K to $249K
#> 9 2.5e+05 $250,000+ $250K to $499K
#> 10 5.0e+05 $500,000+ $500K to $749K
#> 11 1.0e+06 $1,000,000+ $1M to $2.49M
# Large shop: principal gifts ($100K to $150M+)
gift_levels("large")
#> ask_amount giving_level ask_bucket
#> 1 0.0e+00 No Amount No Amount
#> 2 1.0e-02 $1+ Less than $100
#> 3 1.0e+05 $100,000+ $100K to $249K
#> 4 2.5e+05 $250,000+ $250K to $499K
#> 5 5.0e+05 $500,000+ $500K to $749K
#> 6 7.5e+05 $750,000+ $750K to $999K
#> 7 1.0e+06 $1,000,000+ $1M to $2.49M
#> 8 2.5e+06 $2,500,000+ $2.5M to $4.9M
#> 9 5.0e+06 $5,000,000+ $5M to $9.9M
#> 10 1.0e+07 $10,000,000+ $10M to $24.9M
#> 11 2.5e+07 $25,000,000+ $25M to $49.9M
#> 12 5.0e+07 $50,000,000+ $50M to $99.9M
#> 13 1.0e+08 $100,000,000+ $100M to $149M
#> 14 1.5e+08 $150,000,000+ $150M+Bucketing Gift Amounts
Use bucket_gift_level() to categorize gift amounts:
amounts <- c(250, 1000, 5000, 25000, 100000, 1000000, NA)
# Using comprehensive levels (default)
bucket_gift_level(amounts, what = "giving_level")
#> [1] $250+ $1,000+ $5,000+ $25,000+ $100,000+ $1,000,000+
#> [7] <NA>
#> 23 Levels: $150,000,000+ < $100,000,000+ < $50,000,000+ < ... < No Amount
# Using a preset for smaller gift ranges
bucket_gift_level(amounts, levels = "small", what = "giving_level")
#> [1] $250+ $1,000+ $5,000+ $25,000+ $100,000+ $100,000+ <NA>
#> 12 Levels: $100,000+ < $50,000+ < $25,000+ < $10,000+ < $5,000+ < ... < No Amount
# Get broader bucket labels
bucket_gift_level(amounts, levels = "small", what = "ask_bucket")
#> [1] $250 to $499 $1K to $2.4K $5K to $9.9K $25K to $49.9K $100K to $249K
#> [6] $100K to $249K <NA>
#> 12 Levels: $100K to $249K < $50K to $99.9K < ... < No AmountCustom Thresholds
You can also select specific thresholds:
# Custom selection of thresholds
my_levels <- gift_levels(include = c(0, 0.01, 1000, 5000, 25000, 100000))
my_levels
#> ask_amount giving_level ask_bucket
#> 1 0.0e+00 No Amount No Amount
#> 2 1.0e-02 $1+ Less than $100
#> 3 1.0e+03 $1,000+ $1K to $2.4K
#> 4 5.0e+03 $5,000+ $5K to $9.9K
#> 5 2.5e+04 $25,000+ $25K to $49.9K
#> 6 1.0e+05 $100,000+ $100K to $249K
bucket_gift_level(c(500, 2500, 50000), levels = my_levels)
#> [1] $1+ $1,000+ $25,000+
#> Levels: $100,000+ < $25,000+ < $5,000+ < $1,000+ < $1+ < No AmountRating Level Bucketing
The fundr_rating_levels table contains wealth/capacity
rating thresholds:
# View all available thresholds
fundr_rating_levels
#> rating_value rating_level rating_bucket
#> 1 0.0e+00 U - Unrated Unrated
#> 2 1.0e+00 O - Less than $5K Annual
#> 3 5.0e+03 N - $5K to $9.9K Annual
#> 4 1.0e+04 M - $10K to $24.9K Annual
#> 5 2.5e+04 L - $25K to $49.9K Mid-Level
#> 6 5.0e+04 K - $50K to $99.9K Mid-Level
#> 7 1.0e+05 J - $100K to $249K Major
#> 8 2.5e+05 I - $250K to $499K Major
#> 9 5.0e+05 H - $500K to $999K Major
#> 10 1.0e+06 G - $1M to $2.49M Major
#> 11 2.5e+06 F - $2.5M to $4.9M Major
#> 12 5.0e+06 E - $5M to $9.9M Principal
#> 13 1.0e+07 D - $10M to $24.9M Principal
#> 14 2.5e+07 C - $25M to $49.9M Principal
#> 15 5.0e+07 B - $50M to $99.9M Principal
#> 16 1.0e+08 A - $100M+ PrincipalUsing Presets
Rating level presets adjust where the bucket boundaries fall (what counts as “Major” vs “Mid-Level”):
# Small shop: Major at $25K+, Principal at $250K+
rating_levels("small")
#> rating_value rating_level rating_bucket
#> 1 0.0e+00 U - Unrated Unrated
#> 2 1.0e+00 O - Less than $5K Annual
#> 3 5.0e+03 N - $5K to $9.9K Mid-Level
#> 4 2.5e+04 L - $25K to $49.9K Major
#> 5 2.5e+05 I - $250K to $499K Principal
#> 6 1.0e+06 G - $1M to $2.49M Principal
#> 7 5.0e+06 E - $5M to $9.9M Principal
#> 8 2.5e+07 C - $25M to $49.9M Principal
# Large shop: Major at $100K+, Principal at $5M+
rating_levels("large")
#> rating_value rating_level rating_bucket
#> 1 0.0e+00 U - Unrated Unrated
#> 2 1.0e+00 O - Less than $5K Annual
#> 3 5.0e+03 N - $5K to $9.9K Annual
#> 4 1.0e+04 M - $10K to $24.9K Annual
#> 5 2.5e+04 L - $25K to $49.9K Mid-Level
#> 6 5.0e+04 K - $50K to $99.9K Mid-Level
#> 7 1.0e+05 J - $100K to $249K Major
#> 8 2.5e+05 I - $250K to $499K Major
#> 9 5.0e+05 H - $500K to $999K Major
#> 10 1.0e+06 G - $1M to $2.49M Major
#> 11 2.5e+06 F - $2.5M to $4.9M Major
#> 12 5.0e+06 E - $5M to $9.9M Principal
#> 13 1.0e+07 D - $10M to $24.9M Principal
#> 14 2.5e+07 C - $25M to $49.9M Principal
#> 15 5.0e+07 B - $50M to $99.9M Principal
#> 16 1.0e+08 A - $100M+ PrincipalBucketing Ratings
ratings <- c(10000, 50000, 250000, 1000000, 10000000)
# Using comprehensive levels
bucket_rating_level(ratings, what = "rating_bucket")
#> [1] Annual Mid-Level Major Major Principal
#> Levels: Principal < Major < Mid-Level < Annual < Unrated
# Using small shop preset (lower thresholds for Major/Principal)
bucket_rating_level(ratings, levels = "small", what = "rating_bucket")
#> [1] Mid-Level Major Principal Principal Principal
#> Levels: Principal < Major < Mid-Level < Annual < Unrated
# Using large shop preset
bucket_rating_level(ratings, levels = "large", what = "rating_bucket")
#> [1] Annual Mid-Level Major Major Principal
#> Levels: Principal < Major < Mid-Level < Annual < UnratedCustom Bucket Assignments
For full control, create custom bucket mappings:
# Custom thresholds with custom bucket assignments
my_ratings <- rating_levels(
include = c(0, 1, 10000, 50000, 250000),
bucket_map = c(
"0" = "Unrated",
"1" = "Annual",
"10000" = "Mid-Level",
"50000" = "Major",
"250000" = "Principal"
)
)
my_ratings
#> rating_value rating_level rating_bucket
#> 1 0 U - Unrated Unrated
#> 2 1 O - Less than $5K Annual
#> 3 10000 M - $10K to $24.9K Mid-Level
#> 4 50000 K - $50K to $99.9K Major
#> 5 250000 I - $250K to $499K PrincipalWorking with a Data Frame
These functions work well in both base R and dplyr workflows:
df <- data.frame(
donor_id = 1:6,
ask_amount = c(0, 500, 5000, 50000, 250000, 1000000),
capacity_value = c(0, 8000, 25000, 100000, 500000, 5000000)
)
# Using small shop presets
df$gift_level <- bucket_gift_level(df$ask_amount, levels = "small")
df$rating_bucket <- bucket_rating_level(df$capacity_value,
levels = "small",
what = "rating_bucket")
df
#> donor_id ask_amount capacity_value gift_level rating_bucket
#> 1 1 0 0 No Amount Unrated
#> 2 2 500 8000 $500+ Mid-Level
#> 3 3 5000 25000 $5,000+ Major
#> 4 4 50000 100000 $50,000+ Major
#> 5 5 250000 500000 $100,000+ Principal
#> 6 6 1000000 5000000 $100,000+ PrincipalWith dplyr (Optional)
library(dplyr)
df |>
mutate(
gift_level = bucket_gift_level(ask_amount, levels = "small"),
rating_bucket = bucket_rating_level(capacity_value,
levels = "small",
what = "rating_bucket")
)Choosing the Right Preset
| Preset | Gift Levels | Rating Buckets | Best For |
|---|---|---|---|
"small" |
$1 to $100K | Major at $25K+, Principal at $250K+ | Community foundations, small nonprofits |
"medium" |
$1K to $1M | Major at $50K+, Principal at $1M+ | Mid-size organizations |
"large" |
$100K to $150M+ | Major at $100K+, Principal at $5M+ | Universities, hospitals, large institutions |
"all" |
Comprehensive | Default buckets | Custom filtering |
Summary
| Function | Purpose |
|---|---|
gift_levels() |
Get gift level presets |
bucket_gift_level() |
Categorize gift amounts |
rating_levels() |
Get rating level presets |
bucket_rating_level() |
Categorize wealth ratings |
fundr_gift_levels |
Comprehensive gift threshold table |
fundr_rating_levels |
Comprehensive rating threshold table |
