Here’s our process for calculating pills per person within a county— figures that end up in many of our articles.
First, let’s load up the packages we need.
There’s a lot of new ones listed here so we can make fancy tables.
# Uncomment and run the lines below to see if you have the packages required already installed
# packages <- c("tidyverse", "jsonlite", "knitr", "geofacet", "scales")
# if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
# install.packages(setdiff(packages, rownames(installed.packages())), repos = "http://cran.us.r-project.org") # }
library(arcos)
library(tidyverse)
library(lubridate)
library(data.table)
library(formattable)
library(vroom)
library(stringr)
library(scales)
library(knitr)
Let’s look at all pharmacies in West Virginia and their total oxycodone and hydrocodone pill orders.
And use the total_pharmacies_state()
function.
buyer_state | buyer_county | buyer_dea_no | buyer_name | buyer_city | total_dosage_unit | total_records |
---|---|---|---|---|---|---|
WV | MINGO | BS7437064 | STROSNIDER | KERMIT | 13168350 | 7691 |
WV | LOGAN | BF0660565 | FAMILY DISCOUNT PHARMACY INC | MOUNT GAY | 12849040 | 5680 |
WV | MINGO | BH6954401 | HURLEY DRUG COMPANY INC | WILLIAMSON | 8890370 | 11138 |
WV | MINGO | FT0251227 | TUG VALLEY PHARMACY, LLC | WILLIAMSON | 8827860 | 5390 |
WV | GREENBRIER | BM8273524 | FRITZ’S PHARMACY AND WELLNESS | RONCEVERTE | 7528100 | 13997 |
WV | MASON | AF6754748 | FRUTH PHARMACY INC | POINT PLEASANT | 7317220 | 9193 |
Looks nice. We’ve got total_dosage_unit and total_records. We can ignore total_records for this example.
Each pharmacy is listed, as well as which county it resides in.
To help normalize the number of pills ordered, we need to get each county’s population in West Virginia.
We can use the county_population()
function.
BUYER_COUNTY | BUYER_STATE | countyfips | STATE | COUNTY | county_name | NAME | variable | year | population |
---|---|---|---|---|---|---|---|---|---|
BARBOUR | WV | 54001 | 54 | 1 | Barbour | Barbour County, West Virginia | POPESTIMATE2006 | 2006 | 15922 |
BERKELEY | WV | 54003 | 54 | 3 | Berkeley | Berkeley County, West Virginia | POPESTIMATE2006 | 2006 | 96318 |
BOONE | WV | 54005 | 54 | 5 | Boone | Boone County, West Virginia | POPESTIMATE2006 | 2006 | 25101 |
BRAXTON | WV | 54007 | 54 | 7 | Braxton | Braxton County, West Virginia | POPESTIMATE2006 | 2006 | 14585 |
BROOKE | WV | 54009 | 54 | 9 | Brooke | Brooke County, West Virginia | POPESTIMATE2006 | 2006 | 24399 |
CABELL | WV | 54011 | 54 | 11 | Cabell | Cabell County, West Virginia | POPESTIMATE2006 | 2006 | 94943 |
Alright, we have population tables but they’re annual figures.
We have one number for dosage per pharmacy. We don’t need seven years of population data.
So we’ll average it out.
And then join it to the pharmacy list.
population <- population %>%
group_by(BUYER_COUNTY, BUYER_STATE, countyfips) %>%
# Figure out the average population between available years
summarize(average_population=mean(population, na.rm=T)) %>%
## Have to quickly rename these columns to make them lower case so they'll join easily to the other data frame
rename(buyer_county=BUYER_COUNTY, buyer_state=BUYER_STATE)
## Join the data
wv_joined <- left_join(west_virginia, population)
#> Joining, by = c("buyer_state", "buyer_county")
kable(head(wv_joined))
buyer_state | buyer_county | buyer_dea_no | buyer_name | buyer_city | total_dosage_unit | total_records | countyfips | average_population |
---|---|---|---|---|---|---|---|---|
WV | MINGO | BS7437064 | STROSNIDER | KERMIT | 13168350 | 7691 | 54059 | 26869.43 |
WV | LOGAN | BF0660565 | FAMILY DISCOUNT PHARMACY INC | MOUNT GAY | 12849040 | 5680 | 54045 | 36374.29 |
WV | MINGO | BH6954401 | HURLEY DRUG COMPANY INC | WILLIAMSON | 8890370 | 11138 | 54059 | 26869.43 |
WV | MINGO | FT0251227 | TUG VALLEY PHARMACY, LLC | WILLIAMSON | 8827860 | 5390 | 54059 | 26869.43 |
WV | GREENBRIER | BM8273524 | FRITZ’S PHARMACY AND WELLNESS | RONCEVERTE | 7528100 | 13997 | 54025 | 35294.29 |
WV | MASON | AF6754748 | FRUTH PHARMACY INC | POINT PLEASANT | 7317220 | 9193 | 54053 | 26775.57 |
Now that we’ve joined the county population data to each pharmacy, we can do some math to figure out the pills per person per year.
That’s pills / average population / 7
wv_joined <- wv_joined %>%
mutate(per_person=total_dosage_unit/average_population/7)
kable(head(wv_joined))
buyer_state | buyer_county | buyer_dea_no | buyer_name | buyer_city | total_dosage_unit | total_records | countyfips | average_population | per_person |
---|---|---|---|---|---|---|---|---|---|
WV | MINGO | BS7437064 | STROSNIDER | KERMIT | 13168350 | 7691 | 54059 | 26869.43 | 70.01239 |
WV | LOGAN | BF0660565 | FAMILY DISCOUNT PHARMACY INC | MOUNT GAY | 12849040 | 5680 | 54045 | 36374.29 | 50.46359 |
WV | MINGO | BH6954401 | HURLEY DRUG COMPANY INC | WILLIAMSON | 8890370 | 11138 | 54059 | 26869.43 | 47.26758 |
WV | MINGO | FT0251227 | TUG VALLEY PHARMACY, LLC | WILLIAMSON | 8827860 | 5390 | 54059 | 26869.43 | 46.93523 |
WV | GREENBRIER | BM8273524 | FRITZ’S PHARMACY AND WELLNESS | RONCEVERTE | 7528100 | 13997 | 54025 | 35294.29 | 30.47074 |
WV | MASON | AF6754748 | FRUTH PHARMACY INC | POINT PLEASANT | 7317220 | 9193 | 54053 | 26775.57 | 39.03996 |
Let’s make sure we’re only dealing with chain and retail pharmacies.
This requires some supplemental data from buyer_addresses()
and not_pharmacies()
## Get a list of addresses because it includes BUYER_BUS_ACT information
pharmacy_list <- buyer_addresses(state="WV", key="WaPo")
# We just want the BUYER_BUS_ACT to tell if these are practitioners are retail pharmacies
# This will help us filter out the appropriate pharmacies
pharmacy_list <- pharmacy_list %>%
select(buyer_dea_no=BUYER_DEA_NO, BUYER_BUS_ACT)
# Join to the original data set
wv_joined <- left_join(wv_joined, pharmacy_list)
#> Joining, by = "buyer_dea_no"
# Filter the data so we only have retail and chain pharmacies
wv_joined <- wv_joined %>%
filter(BUYER_BUS_ACT=="RETAIL PHARMACY" | BUYER_BUS_ACT=="CHAIN PHARMACY")
# Just in case, let's get the BUYER_DEA_NO of pharmacies that aren't really pharmacies
not_pharms <- not_pharmacies(key="WaPo") %>% pull(BUYER_DEA_NO)
# Filter those out, too, if they're in there
wv_joined <- wv_joined %>%
filter(!buyer_dea_no %in% not_pharms)
# clean up column names so we can make a pretty table
wv_joined <- wv_joined %>%
select(Pharmacy=buyer_name, City=buyer_city, County=buyer_county, `County population`=average_population,
Pills=total_dosage_unit, `Pills per person`=per_person) %>%
mutate(`County population`=round(`County population`),
`Pills per person`=round(`Pills per person`, 1)) %>%
arrange(desc(`Pills per person`)) %>%
slice(1:100)
# Create some custome colors
customGreen0 = "#DeF7E9"
customGreen = "#71CA97"
customRed = "#ff7f7f"
# produce a table
wv_joined %>%
formattable(align=c("l", "l", "l", "r", "r", "r"),
list(Pharmacy = formatter("span", style = ~ style(color="grey", font.weight = "bold")),
Pills=color_tile(customGreen0, customGreen),
`Pills per person` = normalize_bar(customRed)
))
Pharmacy | City | County | County population | Pills | Pills per person |
---|---|---|---|---|---|
STROSNIDER | KERMIT | MINGO | 26869 | 13168350 | 70.0 |
FAMILY DISCOUNT PHARMACY INC | MOUNT GAY | LOGAN | 36374 | 12849040 | 50.5 |
HURLEY DRUG COMPANY INC | WILLIAMSON | MINGO | 26869 | 8890370 | 47.3 |
TUG VALLEY PHARMACY, LLC | WILLIAMSON | MINGO | 26869 | 8827860 | 46.9 |
LARRY’S DRIVE-IN PHARMACY INC | MADISON | BOONE | 24892 | 7227600 | 41.5 |
FRUTH PHARMACY INC | POINT PLEASANT | MASON | 26776 | 7317220 | 39.0 |
REED’S | BERKELEY SPRINGS | MORGAN | 17243 | 3939400 | 32.6 |
WESTSIDE PHARMACY | OCEANA | WYOMING | 23922 | 5353990 | 32.0 |
MACE’S PHARMACY INC | PHILIPPI | BARBOUR | 16117 | 3612930 | 32.0 |
PHILLIPS PHARMACY | SAINT MARYS | PLEASANTS | 7639 | 1686260 | 31.5 |
FRITZ’S PHARMACY AND WELLNESS | RONCEVERTE | GREENBRIER | 35294 | 7528100 | 30.5 |
HIGHLANDER PHARMACY | WEBSTER SPRINGS | WEBSTER | 9290 | 1946520 | 29.9 |
BIG FOUR DRUG STORE INC | HINTON | SUMMERS | 13737 | 2664450 | 27.7 |
PHARMACY INC | CHAPMANVILLE | LOGAN | 36374 | 7032640 | 27.6 |
PHARMACY INC | CHAPMANVILLE | LOGAN | 36374 | 7032640 | 27.6 |
RITE AID OF WEST VIRGINIA, INC. | NEW MARTINSVILLE | WETZEL | 16662 | 3168780 | 27.2 |
JUDY’S DRUG STORE INC | PETERSBURG | GRANT | 11920 | 2207400 | 26.5 |
RITE AID OF WEST VIRGINIA, INC. | ST MARYS | PLEASANTS | 7639 | 1281320 | 24.0 |
FOLLANSBEE PHARMACY | FOLLANSBEE | BROOKE | 24128 | 3899940 | 23.1 |
GIL-CO FAITH PHCY | GLENVILLE | GILMER | 8167 | 1320859 | 23.1 |
BATJAC OF SOUTH CAROLINA | MARLINTON | POCAHONTAS | 8790 | 1397320 | 22.7 |
FRUTH PHARMACY #18 | SPENCER | ROANE | 15119 | 2308890 | 21.8 |
FLAT IRON DRUG STORE INC | WELCH | MCDOWELL | 22599 | 3431120 | 21.7 |
RITE AID OF WEST VIRGINIA, INC. | PT PLEASANT | MASON | 26776 | 3912290 | 20.9 |
WAL-MART PHARMACY 10-2684 | NEW MARTINSVILLE | WETZEL | 16662 | 2426050 | 20.8 |
RITE AID OF WEST VIRGINIA, INC. | GRAFTON | TAYLOR | 16651 | 2349790 | 20.2 |
BEST CARE PHARMACY INC | WESTON | LEWIS | 16520 | 2180940 | 18.9 |
RITE AID OF WEST VIRGINIA, INC. | CLAY | CLAY | 9652 | 1280300 | 18.9 |
NICHOLAS PHARMACY, INC | SUMMERSVILLE | NICHOLAS | 26165 | 3439100 | 18.8 |
WEST VIRGINIA CVS PHARMACY, L.L.C. | GASSAWAY | BRAXTON | 14563 | 1878800 | 18.4 |
RITE AID OF WEST VIRGINIA, INC. | FRANKLIN | PENDLETON | 7745 | 993310 | 18.3 |
BLACK DIAMOND PHARMACY | NORTHFORK | MCDOWELL | 22599 | 2755760 | 17.4 |
MICHEL’S PHARMACY | WEST UNION | DODDRIDGE | 7910 | 961790 | 17.4 |
PHILLIPS DRUG LLC | SISTERSVILLE | TYLER | 9291 | 1105230 | 17.0 |
FOUR SEASONS PHARMACY INC | PRINCETON | MERCER | 61769 | 7099410 | 16.4 |
TRI-STATE PHARMACY | WEIRTON | HANCOCK | 30766 | 3539710 | 16.4 |
MOUNDSVILLE PHARMACY | MOUNDSVILLE | MARSHALL | 33339 | 3808030 | 16.3 |
WAL-MART PHARMACY 10-2849 | MASON | MASON | 26776 | 3010650 | 16.1 |
CARL WALKER’S DRUG STORE | GASSAWAY | BRAXTON | 14563 | 1623340 | 15.9 |
RITE AID OF WEST VIRGINIA, INC. | HARRISVILLE | RITCHIE | 10476 | 1165930 | 15.9 |
POCAHONTAS PHARMACY | MARLINTON | POCAHONTAS | 8790 | 977390 | 15.9 |
WEST VIRGINIA CVS PHARMACY, L.L.C. | WESTON | LEWIS | 16520 | 1793260 | 15.5 |
DENNIS’, PHARMACY LLC | HAMLIN | LINCOLN | 21926 | 2349260 | 15.3 |
WEST VIRGINIA CVS PHARMACY, L.L.C. | MOUNDSVILLE | MARSHALL | 33339 | 3551300 | 15.2 |
UNITED PHARMACY GROUP | OCEANA | WYOMING | 23922 | 2552680 | 15.2 |
WAL-MART PHARMACY 10-2810 | SPENCER | ROANE | 15119 | 1612830 | 15.2 |
WEST VIRGINIA CVS PHARMACY, L.L.C. | ROMNEY | HAMPSHIRE | 23387 | 2419200 | 14.8 |
CLAY FOODLAND PHARMACY | CLAY | CLAY | 9652 | 1003280 | 14.8 |
RITE AID OF WEST VIRGINIA, INC. | BRANCHLAND | LINCOLN | 21926 | 2218910 | 14.5 |
MOUNTAIN LAKE PHARMACY | SUMMERSVILLE | NICHOLAS | 26165 | 2617790 | 14.3 |
KROGER PHARMACY | MADISON | BOONE | 24892 | 2483700 | 14.3 |
WEST VIRGINIA CVS PHARMACY, L.L.C. | MOOREFIELD | HARDY | 13762 | 1331100 | 13.8 |
KROGER PHARMACY | LOGAN | LOGAN | 36374 | 3441400 | 13.5 |
PHARMACY CARE, INC. | PINEVILLE | WYOMING | 23922 | 2262020 | 13.5 |
PETERSTOWN PHARMACY, LLC | PETERSTOWN | MONROE | 13514 | 1253120 | 13.2 |
RITE AID OF WEST VIRGINIA, INC. | WEBSTER SPRINGS | WEBSTER | 9290 | 857680 | 13.2 |
RITE AID OF WEST VIRGINIA, INC. | GRANTSVILLE | CALHOUN | 7538 | 697330 | 13.2 |
WEST VIRGINIA CVS PHARMACY, L.L.C. | KEYSER | MINERAL | 27636 | 2541900 | 13.1 |
WAL-MART PHARMACY 10-2610 | LOGAN | LOGAN | 36374 | 3251160 | 12.8 |
WAL-MART PHARMACY 10-1477 | SUMMERSVILLE | NICHOLAS | 26165 | 2329350 | 12.7 |
RITE AID OF WEST VIRGINIA, INC. | GLENVILLE | GILMER | 8167 | 716400 | 12.5 |
TOWN PHARMACY CARE | MAN | LOGAN | 36374 | 3055510 | 12.0 |
WAL-MART PHARMACY 10-1653 | WESTON | LEWIS | 16520 | 1388800 | 12.0 |
RITE AID OF WEST VIRGINIA, INC. | SUTTON | BRAXTON | 14563 | 1222140 | 12.0 |
COLONY DRUG | BECKLEY | RALEIGH | 78519 | 6550590 | 11.9 |
CRAB ORCHARD PHARMACY, INC. | CRAB ORCHARD | RALEIGH | 78519 | 6477420 | 11.8 |
WAL-MART PHARMACY 10-2696 | MOOREFIELD | HARDY | 13762 | 1125820 | 11.7 |
WEST VIRGINIA CVS PHARMACY, L.L.C. | SUMMERSVILLE | NICHOLAS | 26165 | 2121460 | 11.6 |
RITE AID OF WEST VIRGINIA, INC. | DANVILLE | BOONE | 24892 | 2015250 | 11.6 |
WELCH PHARMACY, INC | WELCH | MCDOWELL | 22599 | 1790640 | 11.3 |
HARTS PHARMACY, INC. | HARTS | LINCOLN | 21926 | 1736300 | 11.3 |
WAL-MART PHARMACY 10-1522 | ELKINS | RANDOLPH | 29098 | 2220600 | 10.9 |
BURNSVILLE DRUG STORE | BURNSVILLE | BRAXTON | 14563 | 1112100 | 10.9 |
T AND J ENTERPRISES INC | HUNTINGTON | WAYNE | 42451 | 3210690 | 10.8 |
FRUTH | RIPLEY | JACKSON | 28951 | 2192823 | 10.8 |
STAATS PHCY & HLTH CARE | SPENCER | ROANE | 15119 | 1145830 | 10.8 |
PENN WAY PHARMACY | WEIRTON | HANCOCK | 30766 | 2296230 | 10.7 |
GREENBRIER MEDICAL ARTS PHARMACY INC | UNION | MONROE | 13514 | 1013090 | 10.7 |
RITE AID OF WEST VIRGINIA, INC. | CRAIGSVILLE | NICHOLAS | 26165 | 1945700 | 10.6 |
MEADOW RIVER HEALTH CARE ASSOCIATES, INC. | CRAIGSVILLE | NICHOLAS | 26165 | 1944600 | 10.6 |
RITE AID OF WEST VIRGINIA, INC. | HINTON | SUMMERS | 13737 | 1011540 | 10.5 |
ARACOMA DRUG CO OF CHAPMANVIL | CHAPMANVILLE | LOGAN | 36374 | 2656020 | 10.4 |
FAM DISCNT PHCY OF STOLLINGS | LOGAN | LOGAN | 36374 | 2639720 | 10.4 |
FAM DISCNT PHCY OF STOLLINGS | LOGAN | LOGAN | 36374 | 2639720 | 10.4 |
CHARLIE’S PHARMACY OF MULLENS, LLC | MULLENS | WYOMING | 23922 | 1737920 | 10.4 |
CARDINAL PHARMACY | ELIZABETH | WIRT | 5758 | 409160 | 10.2 |
WITSCHEY’SPHARMACY | NEW MARTINSVILLE | WETZEL | 16662 | 1176480 | 10.1 |
WAL-MART PHARMACY 10-2833 | GRAFTON | TAYLOR | 16651 | 1164600 | 10.0 |
HAYES PROFESSIONAL SERVICE, LLC | SISTERSVILLE | TYLER | 9291 | 647810 | 10.0 |
CARDINAL PHARMACY | ELIZABETH | WIRT | 5758 | 399420 | 9.9 |
RITE AID OF WEST VIRGINIA, INC. | WHEELING | OHIO | 44545 | 3053760 | 9.8 |
THRIFT DRUG, INC. | WEIRTON | HANCOCK | 30766 | 2107570 | 9.8 |
RITE AID OF WEST VIRGINIA, INC. | RAVENSWOOD | JACKSON | 28951 | 1980740 | 9.8 |
PENNSBORO FAMILY PHARMACY | PENNSBORO | RITCHIE | 10476 | 721220 | 9.8 |
WAL-MART PHARMACY 10-1544 | CLARKSBURG | HARRISON | 68440 | 4659700 | 9.7 |
MEDICINE STOP PHARMACY | UNEEDA | BOONE | 24892 | 1689590 | 9.7 |
RITE AID OF WEST VIRGINIA, INC. | PETERSBURG | GRANT | 11920 | 806970 | 9.7 |
RITE AID OF WEST VIRGINIA, INC. | BERKELEY SPRINGS | MORGAN | 17243 | 1156910 | 9.6 |
MAN PHARMACY | MAN | LOGAN | 36374 | 2420280 | 9.5 |
RITE AID OF WEST VIRGINIA, INC. | BENWOOD | MARSHALL | 33339 | 2225690 | 9.5 |