The Nonprofit Sector in Brief 2019

  1.                       ######                    
  2.                       #Groundwork Setup                    
  3.                       ######                    
  4.                   
  5.                   
  6.                       library                      (httr)                    
  7.                       library                      (tidyverse)                    
  8.                       library                      (stringr)                    
  9.                       library                      (RCurl)                    
  10.                       library                      (reshape2)                    
  11.                       library                      (RColorBrewer)                    
  12.                       library                      (extrafont)                    
  13.                       library                      (knitr)                    
  14.                       library                      (strange)                    
  15.                       library                      (kableExtra)                    
  16.                       library                      (urbnthemes)                    
  17.                       library                      (                      grid                      )                    
  18.                       library                      (gridExtra)                    
  19.                       library                      (rmarkdown)                    
  20.                   
  21. set_urbn_defaults(                      )                    
  22.                   
  23.                   
  24.                       ######                    
  25.                       #Download Raw NCCS Information                    
  26.                       ######                    
  27.                   
  28.                       #This code will utilize the post-obit NCCS data sets, so import separately using defined functions, and save in the "Information" folder                    
  29.                   
  30.                       #Think NCCS Data Archive download functions                    
  31.                       source                      (                      "NCCS_Code/Prep IRS BMF.R"                      )                    
  32.                       source                      (                      "NCCS_Code/Prep NCCS Core File.R"                      )                    
  33.                   
  34.                   
  35.                       #The following lawmaking will think the stated data sets from the NCCS Data Archive.                    
  36.                       #This code is commented out in final to avoid repeated (and bandwidth intensive) downloads                    
  37.                   
  38.                       #IRS Business Main Files:                    
  39.                       #bm0601                    
  40.                       #bm0601 <- getbmffile("2006", "01")                    
  41.                       #bm0701                    
  42.                       #bm0701 <- getbmffile("2007", "01")                    
  43.                       ##bm1106                    
  44.                       #bm1106 <- getbmffile("2011", "06")                    
  45.                       ##bm1206                    
  46.                       #bm1206 <- getbmffile("2012", "06")                    
  47.                       ##bm1502                    
  48.                       #bm1502 <- getbmffile("2015", "02")                    
  49.                       ##bm1602                    
  50.                       #bm1602 <- getbmffile("2016", "02")                    
  51.                       ##bm1709                    
  52.                       #bm1709 <- getbmffile("2017", "09")                    
  53.                       ##                    
  54.                       ##core2005pf                    
  55.                       #core2005pf <- getcorefile(2005, "pf")                    
  56.                       ##core2005pc                    
  57.                       #core2005pc <- getcorefile(2005, "pc")                    
  58.                       ##core2005co                    
  59.                       #core2005co <- getcorefile(2005, "co")                    
  60.                       #                    
  61.                       ##                    
  62.                       ##core2010pf                    
  63.                       #core2010pf <- getcorefile(2010, "pf")                    
  64.                       ##core2010pc                    
  65.                       #core2010pc <- getcorefile(2010, "pc")                    
  66.                       ##core2010co                    
  67.                       #core2010co <- getcorefile(2010, "co")                    
  68.                       #                    
  69.                       ##                    
  70.                       ##core2014pf                    
  71.                       #core2014pf <- getcorefile(2014, "pf")                    
  72.                       ##core2014pc                    
  73.                       #core2014pc <- getcorefile(2014, "pc")                    
  74.                       ##core2014co                    
  75.                       #core2014co <- getcorefile(2014, "co")                    
  76.                       #                    
  77.                       ##                    
  78.                       ##core2015pf                    
  79.                       #core2015pf <- getcorefile(2015, "pf")                    
  80.                       ##core2015pc                    
  81.                       #core2015pc <- getcorefile(2015, "pc")                    
  82.                       ##core2015co                    
  83.                       #core2015co <- getcorefile(2015, "co")                    
  84.                   
  85.                   
  86.                   
  87.                       ######                    
  88.                       #Import Index Tables                    
  89.                       ######                    
  90.                   
  91.                   
  92.                       #The NTEE Lookup file can be downloaded from: http://nccs-information.urban.org/data/misc/nccs.nteedocAllEins.csv                    
  93.                       #The post-obit lawmaking assumes that it has been saved in the local "Data" folder                    
  94.                   
  95.                       #retrieve from CSV:                    
  96. nteedocalleins                      <-                      read_csv(                      "Data/nteedocalleins.csv",
  97.                       col_types                      =                      cols_only(EIN                      =                      col_character(                      ),
  98.                       NteeFinal                      =                      col_character(                      )                    
  99.                       )                      )                      %>%                    
  100.                       rename(NTEEFINAL                      =                      NteeFinal)                    
  101.                   
  102.                   
  103.                   
  104.                       #Inflation Index                    
  105.                   
  106.                       #Load Inflation index table                    
  107.                       #Based on information from Consumer Price Index Tabular array 24: "Historical Consumer Price Index for All Urban Consumers (CPI-U): U.Due south. city average, all items"                    
  108.                       #Updated April 2018, available at https://www.bls.gov/cpi/tables/supplemental-files/home.htm (Historical CPI-U)                    
  109. inflindex                      <-                      read.csv                                            (                      "External_Data/Inflation Index.csv",                      row.names                                            =                      ane, header                      =                      TRUE)                    
  110.                   
  111.                   
  112.                       #Create function to prepare and import selected BMF fields for assay                    
  113. prepbmffile                      <-                      function                      (bmffilepath)                      {                    
  114.                       output                      <-                      read_csv(bmffilepath,
  115.                       col_types                      =                      cols_only(EIN                      =                      col_character(                      ),
  116.                       NTEECC                      =                      col_character(                      ),
  117.                       STATE                      =                      col_character(                      ),                    
  118.                       OUTNCCS                      =                      col_character(                      ),                    
  119.                       SUBSECCD                      =                      col_character(                      ),
  120.                       FNDNCD                      =                      col_character(                      ),
  121.                       CFILER                      =                      col_character(                      ),
  122.                       CZFILER                      =                      col_character(                      ),
  123.                       CTAXPER                      =                      col_character(                      ),
  124.                       CTOTREV                      =                      col_double(                      ),
  125.                       CASSETS                      =                      col_double(                      )                    
  126.                       )                      )                    
  127.                       names                      (output)                      <-                      toupper                      (                      names                      (output)                      )                    
  128.                       return                      (output)                    
  129.                       }                    
  130.                   
  131.                       #Create function to prepare and import selected NCCS Core PC/CO fields for assay                    
  132. prepcorepcfile                      <-                      part                      (corefilepath)                      {                    
  133.                       output                      <-                      read_csv(corefilepath,
  134.                       col_types                      =                      cols_only(EIN                      =                      col_character(                      ),
  135.                       OUTNCCS                      =                      col_character(                      ),
  136.                       SUBSECCD                      =                      col_character(                      ),
  137.                       FNDNCD                      =                      col_character(                      ),
  138.                       TOTREV                      =                      col_double(                      ),
  139.                       EXPS                      =                      col_double(                      ),
  140.                       ASS_EOY                      =                      col_double(                      ),
  141.                       GRREC                      =                      col_double(                      )                    
  142.                       )                      )                    
  143.                       names                      (output)                      <-                      toupper                      (                      names                      (output)                      )                    
  144.                       return                      (output)                    
  145.                       }                    
  146.                   
  147.                   
  148.                       #Create function to set up and import selected NCCS Core PF fields for analysis                    
  149. prepcorepffile                      <-                      role                      (corefilepath)                      {                    
  150.                       output                      <-                      read_csv(corefilepath,
  151.                       col_types                      =                      cols_only(EIN                      =                      col_character(                      ),
  152.                       OUTNCCS                      =                      col_character(                      ),
  153.                       SUBSECCD                      =                      col_character(                      ),
  154.                       FNDNCD                      =                      col_character(                      ),
  155.                       P1TOTREV                      =                      col_double(                      ),
  156.                       P1TOTEXP                      =                      col_double(                      ),
  157.                       P2TOTAST                      =                      col_double(                      )                    
  158.                       )                      )                    
  159.                       names                      (output)                      <-                      toupper                      (                      names                      (output)                      )                    
  160.                       render                      (output)                    
  161.                       }                    
  162.                   
  163.                   
  164.                       ######                    
  165.                       #Import and Prepare NCCS Data files                    
  166.                       #Note: information has already been saved locally using above code                    
  167.                       ######                    
  168.                   
  169.                   
  170.                       ###                    
  171.                       #BMF Data                    
  172.                       ###                    
  173.                   
  174.                       #2005 BMF Data                    
  175. bmf2005                      <-prepbmffile(                      "Information/bm0601.csv"                      )                    
  176.                   
  177.                       #2006 BMF Data                    
  178. bmf2006                      <-prepbmffile(                      "Data/bm0701.csv"                      )                    
  179.                   
  180.                       #2010 BMF Information                    
  181. bmf2010                      <-prepbmffile(                      "Data/bm1106.csv"                      )                    
  182.                   
  183.                       #2011 BMF Data                    
  184. bmf2011                      <-prepbmffile(                      "Data/bm1206.csv"                      )                    
  185.                   
  186.                       #2014 BMF Data                    
  187. bmf2014                      <-prepbmffile(                      "Data/bm1502.csv"                      )                    
  188.                   
  189.                       #2015 BMF Information                    
  190. bmf2015                      <-prepbmffile(                      "Data/bm1602.csv"                      )                    
  191.                   
  192.                       #2016 BMF Information                    
  193. bmf2016                      <-prepbmffile(                      "Information/bm1709.csv"                      )                    
  194.                   
  195.                   
  196.                       ###                    
  197.                       #Cadre Data                    
  198.                       ###                    
  199.                   
  200.                       #                    
  201.                       #Core 2005 Information                    
  202.                       #                    
  203.                   
  204.                       #PC                    
  205. core2005pc                      <-                      prepcorepcfile(                      "Data/core2005pc.csv"                      )                    
  206.                       #CO                    
  207. core2005co                      <-                      prepcorepcfile(                      "Data/core2005co.csv"                      )                    
  208.                       #PF                    
  209. core2005pf                      <-                      prepcorepffile(                      "Data/core2005pf.csv"                      )                    
  210.                   
  211.                       #                    
  212.                       #Core 2006 Data                    
  213.                       #                    
  214.                   
  215.                       #PC                    
  216. core2006pc                      <-                      prepcorepcfile(                      "Information/core2006pc.csv"                      )                    
  217.                       #CO                    
  218. core2006co                      <-                      prepcorepcfile(                      "Data/core2006co.csv"                      )                    
  219.                       #PF                    
  220. core2006pf                      <-                      prepcorepffile(                      "Data/core2006pf.csv"                      )                    
  221.                   
  222.                   
  223.                       #                    
  224.                       #Core 2010 Information                    
  225.                       #                    
  226.                   
  227.                       #PC                    
  228. core2010pc                      <-                      prepcorepcfile(                      "Data/core2010pc.csv"                      )                    
  229.                       #CO                    
  230. core2010co                      <-                      prepcorepcfile(                      "Data/core2010co.csv"                      )                    
  231.                       #PF                    
  232. core2010pf                      <-                      prepcorepffile(                      "Information/core2010pf.csv"                      )                    
  233.                   
  234.                       #                    
  235.                       #Cadre 2011 Information                    
  236.                       #                    
  237.                   
  238.                       #PC                    
  239. core2011pc                      <-                      prepcorepcfile(                      "Data/core2011pc.csv"                      )                    
  240.                       #CO                    
  241. core2011co                      <-                      prepcorepcfile(                      "Data/core2011co.csv"                      )                    
  242.                       #PF                    
  243. core2011pf                      <-                      prepcorepffile(                      "Data/core2011pf.csv"                      )                    
  244.                   
  245.                       #                    
  246.                       #Cadre 2014 Data                    
  247.                       #                    
  248.                   
  249.                       #PC                    
  250. core2014pc                      <-                      prepcorepcfile(                      "Data/core2014pc.csv"                      )                    
  251.                       #CO                    
  252. core2014co                      <-                      prepcorepcfile(                      "Data/core2014co.csv"                      )                    
  253.                       #PF                    
  254. core2014pf                      <-                      prepcorepffile(                      "Data/core2014pf.csv"                      )                    
  255.                   
  256.                   
  257.                       #                    
  258.                       #Core 2015 Data                    
  259.                       #                    
  260.                   
  261.                       #PC                    
  262. core2015pc                      <-                      prepcorepcfile(                      "Data/core2015pc.csv"                      )                    
  263.                       #CO                    
  264. core2015co                      <-                      prepcorepcfile(                      "Information/core2015co.csv"                      )                    
  265.                       #PF                    
  266. core2015pf                      <-                      prepcorepffile(                      "Data/core2015pf.csv"                      )                    
  267.                   
  268.                   
  269.                       #                    
  270.                       #Cadre 2016 Data                                          
  271.                       #                    
  272.                   
  273.                       #PC                    
  274. core2016pc                      <-                      prepcorepcfile(                      "Data/core2016pc.csv"                      )                    
  275.                       #CO                    
  276. core2016co                      <-                      prepcorepcfile(                      "Data/core2016co.csv"                      )                    
  277.                       # Annotation there is no PF file for 2016 swapping in 2015 instead                    
  278. core2016pf                      <-                      prepcorepffile(                      "Data/core2015pf.csv"                      )                    
  279.                   
  280.                       ######                    
  281.                       #Create Group Categories for Analysis by NTEE and Size                    
  282.                       ######                    
  283.                   
  284.                       ###                    
  285.                       #NTEE Groupings                    
  286.                       ###                    
  287.                   
  288.                       #Create NTEE grouping categories                    
  289. arts                      <-                      c                      (                      "A"                      )                    
  290. highered                      <-                      c                      (                      "B4",                      "B5"                      )                    
  291. othered                      <-                      c                      (                      "B"                      )                    
  292. envanimals                      <-                      c                      (                      "C",                      "D"                      )                    
  293. hospitals                      <-                      c                      (                      'E20','E21','E22','E23','E24','F31','E30','E31','E32'                      )                    
  294. otherhlth                      <-                      c                      (                      "Eastward",                      "F",                      "Chiliad",                      "H"                      )                    
  295. humanserv                      <-                      c                      (                      "I",                      "J",                      "K",                      "L",                      "Thousand",                      "N",                      "O",                      "P"                      )                    
  296. intl                      <-                      c                      (                      "Q"                      )                    
  297. pubben                      <-                      c                      (                      "R",                      "Southward",                      "T",                      "U",                      "V",                      "West",                      "Y",                      "Z"                      )                    
  298. relig                      <-                      c                      (                      "X"                      )                    
  299.                   
  300.                       #define office to join NTEE Master listing and categorize organizations appropriately                    
  301. NTEEclassify                      <-                      function                      (dataset)                      {                    
  302.                       #merge in Master NTEE wait up file                    
  303.                       dataset                      <-                      dataset                      %>%                    
  304.                       left_join(nteedocalleins,                      by                      =                      "EIN"                      )                    
  305.                       #create NTEEGRP classifications                    
  306.                       dataset$NTEEGRP                      <-                      "  "                    
  307.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,1,1                      )                      %in%                      arts                      ]                      <-                      "Arts"                    
  308.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,i,1                      )                      %in%                      othered                      ]                      <-                      "Other education"                    
  309.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,i,ii                      )                      %in%                      highered                      ]                      <-                      "Higher educational activity"                    
  310.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,i,1                      )                      %in%                      envanimals]                      <-                      "Environment and animals"                    
  311.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,1,1                      )                      %in%                      otherhlth]                      <-                      "Other health care"                    
  312.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,1,3                      )                      %in%                      hospitals]                      <-                      "Hospitals and primary intendance facilities"                    
  313.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,i,one                      )                      %in%                      humanserv]                      <-                      "Human services"                    
  314.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,1,1                      )                      %in%                      intl]                      <-                      "International"                    
  315.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,1,ane                      )                      %in%                      pubben]                      <-                      "Other public and social do good"                    
  316.                       dataset$NTEEGRP[str_sub(dataset$NTEEFINAL,i,i                      )                      %in%                      relig]                      <-                      "Organized religion related"                    
  317.                       dataset$NTEEGRP[                      is.na                                            (dataset$NTEEFINAL)                      ]                      <-                      "Other public and social benefit"                    
  318.                       return                      (dataset)                    
  319.                       }                    
  320.                   
  321.                       ###                    
  322.                       #Expense Groupings                    
  323.                       ###                    
  324.                   
  325.                       #define function to allocate organizations by expenses size                    
  326. EXPclassify                      <-                      function                      (dataset)                      {                    
  327.                       dataset$EXPCAT                      <-                      " "                    
  328.                       dataset$EXPCAT[dataset$EXPS<                      100000                      ]                      <-                      "a. Under $100,000"                    
  329.                       dataset$EXPCAT[dataset$EXPS                      >=                      100000                      &                      dataset$EXPS<                      500000                      ]                      <-                      "b. $100,000 to $499,999"                    
  330.                       dataset$EXPCAT[dataset$EXPS                      >=                      500000                      &                      dataset$EXPS<                      1000000                      ]                      <-                      "c. $500,000 to $999,999"                    
  331.                       dataset$EXPCAT[dataset$EXPS                      >=                      million                      &                      dataset$EXPS<                      5000000                      ]                      <-                      "d. $1 million to $4.99 million"                    
  332.                       dataset$EXPCAT[dataset$EXPS                      >=                      5000000                      &                      dataset$EXPS<                      10000000                      ]                      <-                      "e. $v million to $9.99 meg"                    
  333.                       dataset$EXPCAT[dataset$EXPS                      >=                      10000000                      ]                      <-                      "f. $10 million or more"                    
  334.                       return                      (dataset)                    
  335.                   
  336.                       }                    
  337.                   
  338.                       ###                    
  339.                       #Employ Groupings to relevant information sets                    
  340.                       ###                    
  341.                   
  342.                       #NTEE                    
  343. core2005pc                      <-                      NTEEclassify(core2005pc)                    
  344. core2006pc                      <-                      NTEEclassify(core2006pc)                    
  345. core2010pc                      <-                      NTEEclassify(core2010pc)                    
  346. core2011pc                      <-                      NTEEclassify(core2011pc)                    
  347. core2014pc                      <-                      NTEEclassify(core2014pc)                    
  348. core2015pc                      <-                      NTEEclassify(core2015pc)                    
  349. core2016pc                      <-                      NTEEclassify(core2016pc)                    
  350.                   
  351.                   
  352.                       #Expenses                    
  353.                   
  354. core2005pc                      <-EXPclassify(core2005pc)                    
  355. core2006pc                      <-EXPclassify(core2006pc)                    
  356. core2010pc                      <-EXPclassify(core2010pc)                    
  357. core2011pc                      <-EXPclassify(core2011pc)                    
  358. core2014pc                      <-EXPclassify(core2014pc)                    
  359. core2015pc                      <-EXPclassify(core2015pc)                    
  360. core2016pc                      <-EXPclassify(core2016pc)                    

Dorsum to top

The Nonprofit Sector in Brief 2019

by NCCS Project Team
June 2020

This brief discusses trends in the number and finances of 501(c)(three) public charities and key information insights on important resources for the nonprofit sector, such as: private charitable contributions and grantmaking past foundations.

Dorsum to top

Highlights

  • Approximately one.54 meg nonprofits were registered with the Internal Revenue Service (IRS) in 2016, an increase of iv.5 per centum from 2006.
  • The nonprofit sector contributed an estimated $ane.047.2 trillion to the United states of america economy in 2016, composing 5.6 percent of the country's gross domestic product (Gross domestic product).1
  • Of the nonprofit organizations registered with the IRS, 501(c)(3) public charities accounted for simply over 3-quarters of acquirement and expenses for the nonprofit sector as a whole ($two.04 trillion and $ane.94 trillion, respectively) and just under 2-thirds of the nonprofit sector'southward total assets ($3.79 trillion).
  • In 2018, total private giving from individuals, foundations, and businesses totaled $427.71 billion (Giving USA Foundation 2019), a decrease of -i.7 per centum from 2017 (after adjusting for inflation). According to Giving USA (2018) full charitable giving rose for sequent years from 2014 to 2017, making 2017 the largest single twelvemonth for private charitable giving, fifty-fifty after adjusting for inflation.
  • An estimated 25.1 percent of U.s. adults volunteered in 2017, contributing an estimated 8.8 billion hours. This is a 1.half-dozen percent increment from 2016. The value of these hours is approximately $195.0 billion.

Dorsum to peak

Size and Scope of the Nonprofit Sector

  1.                       #Ascertain Table 1 Function                    
  2. Table1                      <-                      office                      (datayear)                      {                    
  3.                   
  4.                       ###                    
  5.                       #Step1: Pull from raw bmf data to get Number of registered organizations                    
  6.                       ###                    
  7.                   
  8.                       #Step1a: Create function to pull in BMF data                    
  9.                       byear                      <-                      office                      (datayear)                      {                    
  10.                   
  11.                       #get BMF file names:                    
  12.                       bmf1                      <-                      as.character                                            (                      paste                      (                      "bmf",                      (datayear                      -                      10                      ), sep                      =                      ""                      )                      )                    
  13.                       bmf2                      <-                      equally.character                                            (                      paste                      (                      "bmf",                      (datayear                      -                      five                      ), sep                      =                      ""                      )                      )                    
  14.                       bmf3                      <-                      as.graphic symbol                                            (                      paste                      (                      "bmf",                      (datayear), sep                      =                      ""                      )                      )                    
  15.                   
  16.                       #for each BMF file name, run the following:                    
  17.                       bcomponent                      <-                      function                      (bmfnum, year_of_int)                      {                    
  18.                   
  19.                       #get dataset                                          
  20.                       bmf                      <-                      go                      (bmfnum)                    
  21.                   
  22.                       #calculate all registered nonprofits                    
  23.                       all                      <-                      bmf                      %>%                    
  24.                       filter                      (                      (OUTNCCS                      !=                      "OUT"                      )                      )                      %>%                    
  25.                       summarize(                    
  26.                       yr                      =                      as.graphic symbol                                            (year_of_int),
  27.                       "All registered nonprofits"                      =                      n(                      )                    
  28.                       )                    
  29.                   
  30.                       #calculate all public charities                    
  31.                       pc                      <-                      bmf                      %>%                    
  32.                       filter                      (                      (FNDNCD                      !=                      "02"                      &                      FNDNCD!=                      "03"                      &                      FNDNCD                      !=                      "04"                      ),                      (SUBSECCD                      ==                      "03"                      |SUBSECCD==                      "3"                      ),                      (OUTNCCS                      !=                      "OUT"                      )                      )                      %>%                    
  33.                       summarize(                    
  34.                       year                      =                      as.grapheme                                            (year_of_int),
  35.                       "501(c)(three) public charities"                      =                      n(                      )                    
  36.                       )                    
  37.                   
  38.                       #combine registered nonprofits and public charities                    
  39.                       combined                      <-                      all                      %>%                    
  40.                       left_join(pc,                      by                      =                      "year"                      )                    
  41.                   
  42.                       #render combined file                    
  43.                       return                      (combined)                    
  44.                       }                    
  45.                   
  46.                       #run office for each year                    
  47.                       bcomp1                      <-bcomponent(bmf1,                      (datayear                      -                      10                      )                      )                    
  48.                       bcomp2                      <-bcomponent(bmf2,                      (datayear                      -                      5                      )                      )                    
  49.                       bcomp3                      <-bcomponent(bmf3, datayear)                    
  50.                   
  51.                       #merge years                    
  52.                       total                      <-                      rbind                      (bcomp1, bcomp2, bcomp3)                    
  53.                   
  54.                       #return final                    
  55.                       return                      (full)                    
  56.                       }                    
  57.                   
  58.                       #Step 1b: run confronting year of interest:                    
  59.                       btest<-                      byear(datayear)                    
  60.                   
  61.                       ###                    
  62.                       #Step 2: pull correct core file years                    
  63.                       ###                    
  64.                   
  65.                       #Stride 2a: function to pull right years starting from base year:                    
  66.                       T1grab                      =                      function                      (yr)                      {                    
  67.                       output                      <-                      c                      (yr-                      10,                    
  68.                       yr-                      5,                    
  69.                       twelvemonth)                    
  70.                       return                      (                      list                      (output)                      )                    
  71.                       }                    
  72.                   
  73.                       #Footstep 2b: pull the right years:                    
  74.                       T1years                      <-T1grab(datayear)                    
  75.                   
  76.                       #Step 2c: Function for individual years of core files                    
  77.                   
  78.                       T1Fin<-                      function                      (datayear)                      {                    
  79.                   
  80.                       pcname                      <-                      equally.character                                            (                      paste                      (                      "core", datayear,                      "pc", sep                      =                      ""                      )                      )                    
  81.                       coname                      <-                      as.character                                            (                      paste                      (                      "core", datayear,                      "co", sep                      =                      ""                      )                      )                    
  82.                       pfname                      <-                      as.character                                            (                      paste                      (                      "core", datayear,                      "pf", sep                      =                      ""                      )                      )                    
  83.                   
  84.                       pcfile                      <-                      get                      (pcname)                    
  85.                       cofile                      <-                      become                      (coname)                    
  86.                       pffile                      <-                      get                      (pfname)                    
  87.                   
  88.                       pcfile                      <-                      if                      (datayear                      <                      2010                      )                      filter                      (pcfile,                      (GRREC                      >=                      25000                      )                      )                      else                      filter                      (pcfile,                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      )                      )                    
  89.                       cofile                      <-                      if                      (datayear                      <                      2010                      )                      filter                      (cofile,                      (                      (GRREC                      >=                      25000                      )                      |                      (TOTREV>                      25000                      )                      )                      )                      else                      filter                      (cofile,                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      )                      )                    
  90.                   
  91.                       pc                      <-pcfile                      %>%                    
  92.                       filter                      (                      (                      is.na                                            (OUTNCCS)                      |OUTNCCS                      !=                      "OUT"                      ),                      (FNDNCD                      !=                      "02"                      &                      FNDNCD!=                      "03"                      &                      FNDNCD                      !=                      "04"                      )                      )                      %>%                    
  93.                       summarize(                    
  94.                       Reporting                      =                      n(                      ),
  95.                       "Revenue ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (TOTREV), na.rm                      =Truthful)                      )                      /                      1000000000, digits                      =                      two                      ),
  96.                       "Expenses ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (EXPS), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      ii                      ),
  97.                       "Assets ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (ASS_EOY), na.rm                      =TRUE)                      )                      /                      1000000000, digits=                      two                      )                      )                    
  98.                       pc                      <-                      melt(pc)                    
  99.                       colnames                      (pc)                      [                      2                      ]                      <-                      "PC"                    
  100.                   
  101.                       co                      <-                      cofile                      %>%                    
  102.                       filter                      (                      (OUTNCCS                      !=                      "OUT"                      )                      )                      %>%                    
  103.                       summarize(                    
  104.                       Reporting                      =                      north(                      ),
  105.                       "Acquirement ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (TOTREV), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      two                      ),
  106.                       "Expenses ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (EXPS), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      2                      ),
  107.                       "Assets ($ billions)"                      =                      round                      (                      (                      sum                      (                      every bit.numeric                                            (ASS_EOY), na.rm                      =TRUE)                      )                      /                      1000000000, digits=                      2                      )                      )                    
  108.                       co                      <-                      melt(co)                    
  109.                       colnames                      (co)                      [                      2                      ]                      <-                      "CO"                    
  110.                   
  111.                       pf                      <-                      pffile                      %>%                    
  112.                       filter                      (OUTNCCS                      !=                      "OUT"                      )                      %>%                    
  113.                       summarize(                    
  114.                       Reporting                      =                      n(                      ),
  115.                       "Revenue ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (P1TOTREV), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      2                      ),
  116.                       "Expenses ($ billions)"                      =                      round                      (                      (                      sum                      (                      equally.numeric                                            (P1TOTEXP), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      ii                      ),
  117.                       "Assets ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (P2TOTAST), na.rm                      =TRUE)                      )                      /                      1000000000, digits=                      two                      )                      )                    
  118.                       pf                      <-                      melt(                      pf                      )                    
  119.                       colnames                      (                      pf                      )                      [                      ii                      ]                      <-                      "PF"                    
  120.                   
  121.                       Table1                      <-                      pc                      %>%                    
  122.                       left_join(co,                      by                      =                      "variable"                      )                      %>%                    
  123.                       left_join(                      pf,                      by                      =                      "variable"                      )                      %>%                    
  124.                       transmute(                    
  125.                       variable                      =                      variable,
  126.                       "Reporting nonprofits"                      =                      (PC+CO+PF),
  127.                       "Reporting public charities"                      =                      PC)                    
  128.                       Table1                      <-                      cook(Table1)                    
  129.                       colnames                      (Table1)                      [                      2                      ]                      =                      "Type"                    
  130.                       colnames                      (Table1)                      [                      iii                      ]                      =                      as.character                                            (datayear)                    
  131.                       Table1$variable                      <-                      ifelse                      (Table1$variable                      ==                      "Reporting"                      &                      Table1$Type                      ==                      "Reporting nonprofits",                    
  132.                       "Reporting nonprofits",                      as.character                                            (Table1$variable)                      )                    
  133.                       Table1$variable                      <-                      ifelse                      (Table1$variable                      ==                      "Reporting"                      &                      Table1$Type                      ==                      "Reporting public charities",                    
  134.                       "Reporting public charities",                      as.character                                            (Table1$variable)                      )                    
  135.                       return                      (Table1)                    
  136.                       }                    
  137.                   
  138.                       #Step 2d: run cadre file part for each core file year:                    
  139.                       comp1                      <-                      T1Fin(T1years[                      [                      i                      ]                      ]                      [                      one                      ]                      )                    
  140.                       comp2                      <-                      T1Fin(T1years[                      [                      1                      ]                      ]                      [                      2                      ]                      )                    
  141.                       comp3                      <-                      T1Fin(T1years[                      [                      1                      ]                      ]                      [                      3                      ]                      )                    
  142.                   
  143.                       #Footstep 2e: join multiple core file years together                    
  144.                       Table1All                      <-                      comp1                      %>%                    
  145.                       left_join(comp2,                      by                      =                      c                      (                      "Blazon",                      "variable"                      )                      )                      %>%                    
  146.                       left_join(comp3,                      by                      =                      c                      (                      "Type",                      "variable"                      )                      )                    
  147.                   
  148.                       #Step 2f: drop intermediary column                    
  149.                       Table1All                      <-                      Table1All[                      -                      2                      ]                    
  150.                   
  151.                       ###                    
  152.                       #Pace 3 Merge with BMF data                    
  153.                       ###                    
  154.                   
  155.                       AllRegNonprofits<-                      data.frame                                            (                      "All registered nonprofits", btest[                      [                      2                      ]                      ]                      [                      i                      ], btest[                      [                      2                      ]                      ]                      [                      ii                      ], btest[                      [                      2                      ]                      ]                      [                      3                      ]                      )                    
  156.                       names                      (AllRegNonprofits)                      <-                      names                      (Table1All)                    
  157.                       AllPCs<-                      data.frame                                            (                      "501(c)(3) public charities", btest[                      [                      three                      ]                      ]                      [                      1                      ], btest[                      [                      3                      ]                      ]                      [                      2                      ], btest[                      [                      3                      ]                      ]                      [                      3                      ]                      )                    
  158.                       names                      (AllPCs)                      <-                      names                      (Table1All)                    
  159.                   
  160.                       Table1All                      <-                      rbind                      (Table1All, AllRegNonprofits, AllPCs)                    
  161.                   
  162.                       ###                    
  163.                       #Pace 4: Summate alter over time                    
  164.                       ###                    
  165.                       Table1All                      <-                      Table1All                      %>%                    
  166.                       mutate(                    
  167.                       ChangeA                      =                      circular                      (                      (                      (Table1All[,                      equally.character                                            (datayear-                      5                      )                      ]                      -                      Table1All[,                      every bit.character                                            (datayear-                      x                      )                      ]                      )                      /                      (Table1All[,                      as.character                                            (datayear-                      ten                      )                      ]                      )                      )                    
  168.                       *                      100, digits=                      1                      ),
  169.                       ChangeB                      =                      round                      (                      (                      (Table1All[,                      equally.character                                            (datayear)                      ]                      -                      Table1All[,                      equally.grapheme                                            (datayear-                      ten                      )                      ]                      )                      /                      (Table1All[,                      as.character                                            (datayear-                      10                      )                      ]                      )                      )                    
  170.                       *                      100, digits=                      1                      )                    
  171.                       )                    
  172.                   
  173.                       ###                    
  174.                       #Step 5: calculate aggrandizement adjustments                    
  175.                       ###                    
  176.                       Table1All                      <-                      Table1All                      %>%                    
  177.                       mutate(                    
  178.                       Y1                      =                      circular                      (                      (                      (Table1All[,                      as.grapheme                                            (datayear-                      10                      )                      ]                      *                      inflindex[                      equally.graphic symbol                                            (datayear),]                      )                      /                      (inflindex[                      as.character                                            (datayear-                      10                      ),]                      )                      ), digits=                      3                      ),
  179.                       Y2                      =                      round                      (                      (                      (Table1All[,                      as.character                                            (datayear-                      five                      )                      ]                      *                      inflindex[                      as.character                                            (datayear),]                      )                      /                      (inflindex[                      as.graphic symbol                                            (datayear-                      5                      ),]                      )                      ), digits=                      3                      ),
  180.                       Y3                      =                      round                      (                      (                      (Table1All[,                      every bit.grapheme                                            (datayear)                      ]                      *                      inflindex[                      as.grapheme                                            (datayear),]                      )                      /                      (inflindex[                      every bit.grapheme                                            (datayear),]                      )                      ), digits=                      3                      ),
  181.                       ChangeAInfl                      =                      circular                      (                      (                      (Y2-Y1)                      /Y1)                      *                      100, digits                      =                      1                      ),
  182.                       ChangeBInfl                      =                      circular                      (                      (                      (Y3-Y1)                      /Y1)                      *                      100, digits                      =                      1                      )                    
  183.                       )                    
  184.                   
  185.                       ###                    
  186.                       #Step 6: Format and prepare final table                    
  187.                       ###                    
  188.                   
  189.                       #Stride 6a: remove intermediary columns                    
  190.                       Table1All[                      7                      :                      nine                      ]                      <-                      list                      (NULL)                    
  191.                   
  192.                       #Step 6b: reorder columns to fit Nonprofit Sector in Brief                    
  193.                       Table1All                      <-                      Table1All[,                      c                      (                      ane,2,3,five,7,four,six,8                      )                      ]                    
  194.                   
  195.                       #Pace 6c: omit numerical count columns from inflation adjustments                    
  196.                       Table1All[                      [                      5                      ]                      ]                      [                      1                      ]                      <-                      "--"                    
  197.                       Table1All[                      [                      5                      ]                      ]                      [                      5                      ]                      <-                      "--"                    
  198.                       Table1All[                      [                      8                      ]                      ]                      [                      1                      ]                      <-                      "--"                    
  199.                       Table1All[                      [                      8                      ]                      ]                      [                      v                      ]                      <-                      "--"                    
  200.                       Table1All[                      [                      5                      ]                      ]                      [                      9                      ]                      <-                      "--"                    
  201.                       Table1All[                      [                      five                      ]                      ]                      [                      10                      ]                      <-                      "--"                    
  202.                       Table1All[                      [                      viii                      ]                      ]                      [                      9                      ]                      <-                      "--"                    
  203.                       Table1All[                      [                      8                      ]                      ]                      [                      10                      ]                      <-                      "--"                    
  204.                   
  205.                       #Footstep 6d: rename columns                    
  206.                       colnames                      (Table1All)                      [                      ane                      ]                      <-                      ""                    
  207.                       colnames                      (Table1All)                      [                      iv                      ]                      <-                      paste                      (                      "% change, ",                      equally.character                                            (datayear                      -                      10                      ),                      "\u2013",                      as.character                                            (datayear                      -                      5                      ), sep                      =                      ""                      )                    
  208.                       colnames                      (Table1All)                      [                      5                      ]                      <-                      paste                      (                      "% alter, ",                      equally.character                                            (datayear                      -                      x                      ),                      "\u2013",                      as.character                                            (datayear                      -                      5                      ),                      " (inflation adjusted)", sep                      =                      ""                      )                    
  209.                       colnames                      (Table1All)                      [                      7                      ]                      <-                      paste                      (                      "% modify, ",                      as.graphic symbol                                            (datayear                      -                      10                      ),                      "\u2013",                      as.character                                            (datayear                      ), sep                      =                      ""                      )                    
  210.                       colnames                      (Table1All)                      [                      viii                      ]                      <-                      paste                      (                      "% change, ",                      as.character                                            (datayear                      -                      10                      ),                      "\u2013",                      as.character                                            (datayear                      ),                      " (aggrandizement adapted)", sep                      =                      ""                      )                    
  211.                   
  212.                       #Step6e: reorder rows                    
  213.                       Table1All                      <-                      Table1All[                      c                      (                      9,1,2,3,iv,10,5,6,vii,8                      ),]                    
  214.                   
  215.                       #Step 6f: return final output                    
  216.                       return                      (Table1All)                    
  217.                       }                    
  218.                   
  219.                       #Create Table i based on 2015 information                    
  220. Table1_2016                      <-Table1(params$NCCSDataYr)                    
  221.                       write.csv                                            (Table1_2016,                      "Tables/NSiB_Table1.csv"                      )                    
  222.                   
  223.                   
  224.                   
  225.                       #Define Table 1 Current Growth Role (Appendix Table Showing only most contempo growth)                    
  226. Table1CurGrowth                      <-                      function                      (datayear)                      {                    
  227.                       ###                    
  228.                       #Step1: Pull from raw BMF data to get Number of registered organizations                    
  229.                       ###                    
  230.                   
  231.                       #Step1a: Create function                    
  232.                       byear                      <-                      role                      (datayear)                      {                    
  233.                   
  234.                       #get BMF file names:                    
  235.                       bmf1                      <-                      equally.graphic symbol                                            (                      paste                      (                      "bmf",                      (datayear                      -                      1                      ), sep                      =                      ""                      )                      )                    
  236.                       bmf2                      <-                      as.character                                            (                      paste                      (                      "bmf",                      (datayear), sep                      =                      ""                      )                      )                    
  237.                   
  238.                       #for each BMF file proper noun, run the following:                    
  239.                       bcomponent                      <-                      function                      (bmfnum, year_of_int)                      {                    
  240.                   
  241.                       #get dataset                                          
  242.                       bmf                      <-                      become                      (bmfnum)                    
  243.                   
  244.                       #summate all registered nonprofits                    
  245.                       all                      <-                      bmf                      %>%                    
  246.                       filter                      (                      (OUTNCCS                      !=                      "OUT"                      )                      )                      %>%                    
  247.                       summarize(                    
  248.                       yr                      =                      equally.character                                            (year_of_int),
  249.                       "All registered nonprofits"                      =                      n(                      )                    
  250.                       )                    
  251.                   
  252.                       #calculate all public charities                    
  253.                       pc                      <-                      bmf                      %>%                    
  254.                       filter                      (                      (FNDNCD                      !=                      "02"                      &                      FNDNCD!=                      "03"                      &                      FNDNCD                      !=                      "04"                      ),                      (SUBSECCD                      ==                      "03"                      |SUBSECCD==                      "3"                      ),                      (OUTNCCS                      !=                      "OUT"                      )                      )                      %>%                    
  255.                       summarize(                    
  256.                       twelvemonth                      =                      every bit.character                                            (year_of_int),
  257.                       "501(c)(3) public charities"                      =                      n(                      )                    
  258.                       )                    
  259.                   
  260.                       #combine registered nonprofits and public charities                    
  261.                       combined                      <-                      all                      %>%                    
  262.                       left_join(pc,                      past                      =                      "yr"                      )                    
  263.                   
  264.                       #render combined file                    
  265.                       return                      (combined)                    
  266.                       }                    
  267.                   
  268.                       #run role for each yr                    
  269.                       bcomp1                      <-bcomponent(bmf1,                      (datayear                      -                      1                      )                      )                    
  270.                       bcomp2                      <-bcomponent(bmf2,                      (datayear)                      )                    
  271.                   
  272.                       #merge years                    
  273.                       total                      <-                      rbind                      (bcomp1, bcomp2)                    
  274.                   
  275.                       #return concluding                    
  276.                       render                      (full)                    
  277.                       }                    
  278.                   
  279.                       #Pace 1b: run confronting yr of interest:                    
  280.                       btest<-                      byear(datayear)                    
  281.                   
  282.                       ###                    
  283.                       #Step two: Pull NCCS Core File information                    
  284.                       ###                    
  285.                   
  286.                       #Step 2a: role to pull right years starting from base of operations yr:                    
  287.                       T1grab                      =                      function                      (year)                      {                    
  288.                       output                      <-                      c                      (yr-                      1,                    
  289.                       yr)                    
  290.                       return                      (                      list                      (output)                      )                    
  291.                       }                    
  292.                   
  293.                       #Step 2b: pull the correct years:                    
  294.                       T1years                      <-T1grab(datayear)                    
  295.                   
  296.                       #Step 2c: Office for private years of core files                    
  297.                   
  298.                       T1Fin<-                      function                      (datayear)                      {                    
  299.                   
  300.                       pcname                      <-                      equally.character                                            (                      paste                      (                      "core", datayear,                      "pc", sep                      =                      ""                      )                      )                    
  301.                       coname                      <-                      as.character                                            (                      paste                      (                      "cadre", datayear,                      "co", sep                      =                      ""                      )                      )                    
  302.                       pfname                      <-                      equally.graphic symbol                                            (                      paste                      (                      "cadre", datayear,                      "pf", sep                      =                      ""                      )                      )                    
  303.                   
  304.                       pcfile                      <-                      get                      (pcname)                    
  305.                       cofile                      <-                      get                      (coname)                    
  306.                       pffile                      <-                      go                      (pfname)                    
  307.                   
  308.                       pcfile                      <-                      if                      (datayear                      <                      2010                      )                      filter                      (pcfile,                      (GRREC                      >=                      25000                      )                      )                      else                      filter                      (pcfile,                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      )                      )                    
  309.                       cofile                      <-                      if                      (datayear                      <                      2010                      )                      filter                      (cofile,                      (                      (GRREC                      >=                      25000                      )                      |                      (TOTREV>                      25000                      )                      )                      )                      else                      filter                      (cofile,                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      )                      )                    
  310.                   
  311.                       pc                      <-pcfile                      %>%                    
  312.                       filter                      (                      (                      is.na                                            (OUTNCCS)                      |OUTNCCS                      !=                      "OUT"                      ),                      (FNDNCD                      !=                      "02"                      &                      FNDNCD!=                      "03"                      &                      FNDNCD                      !=                      "04"                      )                      )                      %>%                    
  313.                       summarize(                    
  314.                       Reporting                      =                      due north(                      ),
  315.                       "Revenue ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (TOTREV), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      2                      ),
  316.                       "Expenses ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (EXPS), na.rm                      =True)                      )                      /                      1000000000, digits                      =                      ii                      ),
  317.                       "Assets ($ billions)"                      =                      circular                      (                      (                      sum                      (                      as.numeric                                            (ASS_EOY), na.rm                      =Truthful)                      )                      /                      1000000000, digits=                      2                      )                      )                    
  318.                       pc                      <-                      melt(pc)                    
  319.                       colnames                      (pc)                      [                      2                      ]                      <-                      "PC"                    
  320.                   
  321.                       co                      <-                      cofile                      %>%                    
  322.                       filter                      (                      (OUTNCCS                      !=                      "OUT"                      )                      )                      %>%                    
  323.                       summarize(                    
  324.                       Reporting                      =                      n(                      ),
  325.                       "Revenue ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (TOTREV), na.rm                      =True)                      )                      /                      1000000000, digits                      =                      2                      ),
  326.                       "Expenses ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (EXPS), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      2                      ),
  327.                       "Assets ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (ASS_EOY), na.rm                      =TRUE)                      )                      /                      1000000000, digits=                      2                      )                      )                    
  328.                       co                      <-                      melt(co)                    
  329.                       colnames                      (co)                      [                      2                      ]                      <-                      "CO"                    
  330.                   
  331.                       pf                      <-                      pffile                      %>%                    
  332.                       filter                      (OUTNCCS                      !=                      "OUT"                      )                      %>%                    
  333.                       summarize(                    
  334.                       Reporting                      =                      n(                      ),
  335.                       "Revenue ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (P1TOTREV), na.rm                      =True)                      )                      /                      1000000000, digits                      =                      two                      ),
  336.                       "Expenses ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (P1TOTEXP), na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      2                      ),
  337.                       "Assets ($ billions)"                      =                      round                      (                      (                      sum                      (                      as.numeric                                            (P2TOTAST), na.rm                      =Truthful)                      )                      /                      1000000000, digits=                      2                      )                      )                    
  338.                       pf                      <-                      cook(                      pf                      )                    
  339.                       colnames                      (                      pf                      )                      [                      two                      ]                      <-                      "PF"                    
  340.                   
  341.                       Table1                      <-                      pc                      %>%                    
  342.                       left_join(co,                      by                      =                      "variable"                      )                      %>%                    
  343.                       left_join(                      pf,                      by                      =                      "variable"                      )                      %>%                    
  344.                       transmute(                    
  345.                       variable                      =                      variable,
  346.                       "Reporting nonprofits"                      =                      (PC+CO+PF),
  347.                       "Reporting public charities"                      =                      PC)                    
  348.                       Table1                      <-                      melt(Table1)                    
  349.                       colnames                      (Table1)                      [                      2                      ]                      =                      "Type"                    
  350.                       colnames                      (Table1)                      [                      iii                      ]                      =                      equally.character                                            (datayear)                    
  351.                       Table1$variable                      <-                      ifelse                      (Table1$variable                      ==                      "Reporting"                      &                      Table1$Type                      ==                      "Reporting nonprofits",                    
  352.                       "Reporting nonprofits",                      as.character                                            (Table1$variable)                      )                    
  353.                       Table1$variable                      <-                      ifelse                      (Table1$variable                      ==                      "Reporting"                      &                      Table1$Type                      ==                      "Reporting public charities",                    
  354.                       "Reporting public charities",                      as.character                                            (Table1$variable)                      )                    
  355.                       render                      (Table1)                    
  356.                       }                    
  357.                   
  358.                       #Step 2nd: run core file function for each cadre file year:                    
  359.                       comp1                      <-                      T1Fin(T1years[                      [                      1                      ]                      ]                      [                      1                      ]                      )                    
  360.                       comp2                      <-                      T1Fin(T1years[                      [                      1                      ]                      ]                      [                      ii                      ]                      )                    
  361.                   
  362.                       #Setp 2e: join multiple cadre file years together                    
  363.                       Table1CG                      <-                      comp1                      %>%                    
  364.                       left_join(comp2,                      by                      =                      c                      (                      "Blazon",                      "variable"                      )                      )                    
  365.                   
  366.                       #Step 2f: drop intermediary column                    
  367.                       Table1CG                      <-                      Table1CG[                      -                      two                      ]                    
  368.                   
  369.                       ####                    
  370.                       #Step three: Merge with BMF data                    
  371.                       ###                    
  372.                   
  373.                       AllRegNonprofits<-                      information.frame                                            (                      "All registered nonprofits", btest[                      [                      2                      ]                      ]                      [                      1                      ], btest[                      [                      2                      ]                      ]                      [                      2                      ]                      )                    
  374.                       names                      (AllRegNonprofits)                      <-                      names                      (Table1CG)                    
  375.                       AllPCs<-                      data.frame                                            (                      "501(c)(iii) public charities", btest[                      [                      3                      ]                      ]                      [                      1                      ], btest[                      [                      3                      ]                      ]                      [                      2                      ]                      )                    
  376.                       names                      (AllPCs)                      <-                      names                      (Table1CG)                    
  377.                   
  378.                       Table1CG                      <-                      rbind                      (Table1CG, AllRegNonprofits, AllPCs)                    
  379.                   
  380.                       ###                    
  381.                       #Footstep four: Calculate change over time                    
  382.                       ###                    
  383.                       Table1CG                      <-                      Table1CG                      %>%                    
  384.                       mutate(                    
  385.                       Change                      =                      circular                      (                      (                      (Table1CG[,                      as.character                                            (datayear)                      ]                      -                      Table1CG[,                      as.graphic symbol                                            (datayear-                      1                      )                      ]                      )                      /                      (Table1CG[,                      every bit.character                                            (datayear-                      1                      )                      ]                      )                      )                    
  386.                       *                      100, digits=                      1                      )                    
  387.                       )                    
  388.                   
  389.                       ###                    
  390.                       #Step v: summate inflation adjustments                    
  391.                       ###                    
  392.                       Table1CG                      <-                      Table1CG                      %>%                    
  393.                       mutate(                    
  394.                       Y1_InflAdj                      =                      circular                      (                      (                      (Table1CG[,                      as.character                                            (datayear-                      one                      )                      ]                      *                      inflindex[                      as.grapheme                                            (datayear),]                      )                      /                      (inflindex[                      as.character                                            (datayear-                      1                      ),]                      )                      ), digits=                      three                      ),                    
  395.                       Y2_InflAdj                      =                      round                      (                      (                      (Table1CG[,                      as.character                                            (datayear)                      ]                      *                      inflindex[                      as.character                                            (datayear),]                      )                      /                      (inflindex[                      every bit.grapheme                                            (datayear),]                      )                      ), digits=                      3                      ),
  396.                       ChangeInfl                      =                      round                      (                      (                      (Y2_InflAdj-Y1_InflAdj)                      /Y1_InflAdj)                      *                      100, digits                      =                      1                      )                    
  397.                       )                    
  398.                   
  399.                       ###                    
  400.                       #Footstep 6: Format and fix final table                    
  401.                       ###                    
  402.                   
  403.                       #Step 6a: omit numerical count columns from inflation adjustments                    
  404.                       Table1CG[                      [                      5                      ]                      ]                      [                      1                      ]                      <-                      "--"                    
  405.                       Table1CG[                      [                      5                      ]                      ]                      [                      5                      ]                      <-                      "--"                    
  406.                       Table1CG[                      [                      v                      ]                      ]                      [                      9                      ]                      <-                      "--"                    
  407.                       Table1CG[                      [                      5                      ]                      ]                      [                      ten                      ]                      <-                      "--"                    
  408.                       Table1CG[                      [                      vi                      ]                      ]                      [                      1                      ]                      <-                      "--"                    
  409.                       Table1CG[                      [                      6                      ]                      ]                      [                      5                      ]                      <-                      "--"                    
  410.                       Table1CG[                      [                      6                      ]                      ]                      [                      ix                      ]                      <-                      "--"                    
  411.                       Table1CG[                      [                      half-dozen                      ]                      ]                      [                      ten                      ]                      <-                      "--"                    
  412.                       Table1CG[                      [                      7                      ]                      ]                      [                      one                      ]                      <-                      "--"                    
  413.                       Table1CG[                      [                      7                      ]                      ]                      [                      5                      ]                      <-                      "--"                    
  414.                       Table1CG[                      [                      7                      ]                      ]                      [                      9                      ]                      <-                      "--"                    
  415.                       Table1CG[                      [                      7                      ]                      ]                      [                      x                      ]                      <-                      "--"                    
  416.                   
  417.                       #Pace 6b: rename columns                    
  418.                       colnames                      (Table1CG)                      [                      1                      ]                      <-                      ""                    
  419.                       colnames                      (Table1CG)                      [                      4                      ]                      <-                      paste                      (                      "% change, ",                      as.character                                            (datayear                      -                      1                      ),                      "\u2013",                      as.character                                            (datayear), sep                      =                      ""                      )                    
  420.                       colnames                      (Table1CG)                      [                      vii                      ]                      <-                      paste                      (                      "% change, ",                      every bit.character                                            (datayear                      -                      1                      ),                      "\u2013",                      as.character                                            (datayear),                      " (inflation adjusted)", sep                      =                      ""                      )                    
  421.                   
  422.                       #Stride 6c: reorder rows                    
  423.                       Table1CG                      <-                      Table1CG[                      c                      (                      9,one,ii,3,4,x,5,6,7,viii                      ),]                    
  424.                   
  425.                       #Stride 6d: return final output                    
  426.                       return                      (Table1CG)                    
  427.                       }                    
  428.                   
  429.                       #Create Table 1 Current Growth (2015-2016) based on 2016 data                    
  430. Table1CG_2016                      <-                      Table1CurGrowth(params$NCCSDataYr)                    
  431.                       write.csv                                            (Table1CG_2016,                      "Tables/NSiB_Table1_Appendix_Current_Growth.csv"                      )                    

All Nonprofit Organizations

Number

From 2006 to 2016, the number of nonprofit organizations registered with the IRS rose from 1.48 million to ane.54 million, an increase of four.5 pct. These one.54 one thousand thousand organizations incorporate a diverse range of nonprofits, including art, health, education, and advocacy nonprofits; labor unions; and business and professional associations. This broad spectrum, yet, only includes registered nonprofit organizations; the total number of nonprofit organizations operating in the United States is unknown. Religious congregations and organizations with less than $five,000 in gross receipts are not required to register with the IRS, although many do.2 These unregistered organizations aggrandize the telescopic of the nonprofit sector across the 1.54 meg organizations this brief focuses on.

Finances

Approximately 35 percent of nonprofits registered with the IRS in 2016 were required to file a Form 990, Form 990-EZ, or Form 990-PF.iii These reporting nonprofits identified $2.62 trillion in revenues and $5.99 trillion in assets (table 1).four Between 2006 and 2016, reporting nonprofits experienced positive financial growth. Both revenues and assets grew faster than Gdp; after adjusting for aggrandizement revenues grew 24.2 percent and assets grew 30.9 percent, compared with 13.6 percent growth for national Gross domestic product during the aforementioned menstruation. Expenses grew xxx.7 percent between 2006 and 2016. In the short term, after adjusting for inflation, revenues grew 1.8 percent from $two.58 trillion in 2015 to $two.62 in 2016; assets increased 2.iii percent from $five.86 trillion to $5.99. Expenses besides grew from $2.39 trillion in 2015 to $2.48 in 2016, an increase of 3.half-dozen percentage.

Table i

Size and Scope of the Nonprofit Sector, 2006–2016

  1.                       #Display Table 1                    
  2.                       options                      (knitr.kable.NA                      =                      ""                      )                    
  3. kable(Table1_2016, format.args                      =                      list                      (decimal.marker                      =                      '.', big.mark                      =                      ","                      ),                    
  4.                       "html",                    
  5.                       row.names                                            =                      False,
  6.                       align                      =                      "lccccccc"                      )                      %>%                    
  7.                       kable_styling(                      "hover", full_width                      =                      F                      )                      %>%                    
  8.                       row_spec(                      c                      (                      1,half dozen                      ), bold                      =                      T                      )                      %>%                    
  9.                       row_spec(                      3                      :                      5, italic                      =                      T                      )                      %>%                    
  10.                       row_spec(                      eight                      :                      ten, italic                      =                      T                      )                      %>%                    
  11.                       add_indent(                      c                      (                      three,4,5,8,9,10                      )                      )                    
2006 2011 % change, 2006–2011 % change, 2006–2011 (aggrandizement adjusted) 2016 % alter, 2006–2016 % change, 2006–2016 (aggrandizement adjusted)
All registered nonprofits 1,478,553.00 i,447,471.00 -2.ane -- one,544,812.00 4.5 --
Reporting nonprofits 560,352.00 511,658.00 -8.7 -- 533,112.00 -4.9 --
Revenue ($ billions) 1,773.29 2,099.69 eighteen.4 6.i ii,621.85 47.9 24.ii
Expenses ($ billions) 1,591.87 1,987.fifteen 24.8 11.9 2,476.83 55.6 30.7
Assets ($ billions) 3,845.30 4,611.08 19.9 7.5 v,990.47 55.viii 30.ix
501(c)(three) public charities 904,672.00 966,573.00 6.viii -- 1,081,969.00 19.half dozen --
Reporting public charities 326,246.00 287,318.00 -eleven.9 -- 318,015.00 -2.five --
Revenue ($ billions) 1,290.46 1,592.07 23.4 x.6 ii,041.50 58.2 32.9
Expenses ($ billions) 1,171.30 ane,496.44 27.8 fourteen.5 1,937.31 65.4 38.9
Avails ($ billions) 2,272.14 ii,826.34 24.4 11.5 3,793.70 67.0 40.ii

Sources: Urban Institute, National Center for Charitable Statistics, Core Files (2006, 2011, and 2016); and the Internal Revenue Service Business Master Files, Exempt Organizations (2006–16).

Notes: Reporting public charities include only organizations that both reported (filed IRS Forms 990) and were required to exercise so (had $25,000 or more than in gross receipts in 2006 and more $50,000 in gross receipts in 2011 and 2016). Organizations that had their revenue enhancement-exempt status revoked for failing to file a financial return for iii sequent years have been removed from the 2016 nonprofit full. Foreign organizations, government-associated organizations, and organizations without country identifiers have also been excluded. Unless noted, all amounts are in electric current dollars and are not adjusted for inflation.

Public Charities

Number

Public charities are the largest category of the more than thirty types of tax-exempt nonprofit organizations defined by the Internal Revenue Code. Classified nether section 501(c)(3) (along with private foundations), public charities include arts, culture, and humanities organizations; education organizations; health care organizations; human services organizations; and other types of organizations to which donors can make revenue enhancement-deductible donations. In 2016, well-nigh one.08 million organizations were classified every bit public charities, composing about two-thirds of all registered nonprofits. Between 2006 and 2016, the number of public charities grew 19.6 percent, faster than the growth of all registered nonprofits (4.5 percentage). Consequently, public charities made up a larger share of the nonprofit sector in 2015 (69.7 percent) than in 2005 (60 percentage).

The number of reporting public charities required to file a Form 990 or Grade 990-EZ grew slightly betwixt 2015 and 2016, showing an increase of i percent.

Finances

Almost three-fifths (59.7 percent) of all nonprofit organizations reporting to the IRS in 2016 were public charities. Accounting for more than three-quarters of revenue and expenses for the nonprofit sector, public charities reported $2.04 trillion in revenues and $1.94 trillion in expenses. Avails held by public charities accounted for just nether two-thirds of the sector'south full ($3.79 trillion).

Size

  1.                       #create Figure ane Underlying table                    
  2.                   
  3. Fig1Table                      <-                      function                      (datayear)                      {                    
  4.                       #select cadre file by yr                    
  5.                       file                      <-                      c                      (                      paste                      (                      "core", datayear,                      "pc", sep                      =                      ""                      )                      )                    
  6.                   
  7.                       #go core file                    
  8.                       dataset                      <-                      get                      (                      file                      )                    
  9.                   
  10.                       #filter out organizations below minimum filing threshold for 990-EZ                    
  11.                       dataset                      <-                      if                      (datayear                      <                      2010                      )                      filter                      (dataset,                      (                      (GRREC                      >=                      25000                      )                      |                      (TOTREV>                      25000                      )                      )                      )                      else                      filter                      (dataset,                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      )                      )                    
  12.                   
  13.                       #create table                    
  14.                       expstable                      <-                      dataset                      %>%                    
  15.                       #filter past GRREC over threshold, not out, and FNDNCD != two,3,4                    
  16.                       filter                      (                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      ),                      (OUTNCCS                      !=                      "OUT"                      ),                      (FNDNCD                      !=                      "02"                      &                      FNDNCD!=                      "03"                      &                      FNDNCD                      !=                      "04"                      )                      )                      %>%                    
  17.                       #group past exps cat                    
  18.                       group_by(EXPCAT)                      %>%                    
  19.                       #create summary values                    
  20.                       summarize(                    
  21.                       number_orgs                      =                      northward(                      ),
  22.                       total_expenses                      =                      round                      (                      (                      sum                      (EXPS, na.rm                      =TRUE)                      /                      1000000000                      ), digits                      =                      two                      )                    
  23.                       )                      %>%                    
  24.                       #drop former variables, continue but categories and proportions                    
  25.                       mutate(                    
  26.                       year_of_data                      =                      every bit.character                                            (datayear),
  27.                       EXPCAT                      =                      EXPCAT,
  28.                       "Public charities"                      =                      circular                      (                      (                      (number_orgs/                      sum                      (number_orgs)                      )                      *                      100                      ),digits=                      i                      ),
  29.                       "Full expenses"                      =                      round                      (                      (                      (total_expenses/                      sum                      (total_expenses)                      )                      *                      100                      ),digits=                      ane                      )                    
  30.                       )                    
  31.                       #render output                    
  32.                       return                      (expstable)                      }                    
  33.                   
  34.                       #Create figure 1 Based on 2015 data                    
  35. Figure1_2016                      <-                      Fig1Table(params$NCCSDataYr)                    
  36.                       write.csv                                            (Figure1_2016,                      "Figures/NSiB_Figure1_Table.csv"                      )                    

Even after excluding organizations with gross receipts beneath the $l,000 filing threshold, small organizations composed the majority of public charities in 2016. Every bit shown in figure i beneath, 66.6 percent had less than $500,000 in expenses (211,782 organizations); they composed less than 2 per centum of full public charity expenditures ($32.8 billion). Though organizations with $10 million or more included but five.four percent of total public charities (17,063 organizations), they accounted for 88.1 percent of public charity expenditures ($ane.7 trillion).

FIGURE 1

Number and Expenses of Reporting Public Charities every bit a Percentage of All Reporting Public Charities and Expenses

  1.                       #Create and Display Figure For 2016 Data                                          
  2. Fig1Plot                      <-                      office                      (expstable)                      {                    
  3.                   
  4.                       #select relevant fields                    
  5.                       expstable                      <-                      expstable[,c                      (                      "year_of_data",                      "EXPCAT",                      "Public charities",                      "Total expenses"                      )                      ]                    
  6.                   
  7.                       #plot graph                    
  8.                       Fig1<-                      expstable                      %>%                    
  9.                       #shift from broad to long                    
  10.                       melt(                      )                      %>%                    
  11.                       #create graph                    
  12.                       ggplot(aes(EXPCAT, value, fill=variable)                      )                      +                    
  13.                       geom_bar(stat=                      "identity", position=                      "dodge"                      )                      +                    
  14.                       geom_text(aes(EXPCAT, value, characterization=                      formatC                      (                      round                      (value,1                      ),                      format                      =                      'f', digits                      =                      1                      )                      ),
  15.                       vjust=-                      1,                    
  16.                       position                      =                      position_dodge(width=                      1                      ),
  17.                       size                      =                      3                      )                      +                    
  18.                       #labs(                    
  19.                       #championship = "Figure ane",                    
  20.                       #subtitle =  paste("Number and Expenses of Reporting Public Charities as a Percent of All Reporting Public Charities and Expenses, ", expstable$year_of_data[one], sep =""),                    
  21.                       #caption = paste("Urban Found, National Center for Charitable Statistics, Cadre Files (Public Charities, "                    
  22.                       #, expstable$year_of_data[1], ")", sep ="")) +                    
  23.                       theme(centrality.title.y                      =                      element_blank(                      ),
  24.                       centrality.text.y                      =                      element_blank(                      ),
  25.                       axis.ticks.y                      =                      element_blank(                      ),
  26.                       axis.championship.x                      =                      element_blank(                      ),
  27.                       console.grid                      =                      element_blank(                      )                      )                      +                    
  28.                       scale_y_continuous(expand                      =                      c                      (                      0,                      0                      ), limits                      =                      c                      (                      0,105                      )                      )                      +                    
  29.                       scale_x_discrete(                      labels                      =                      c                      (                      "Nether $100,00",                      "$100,000 to $499,999",                      "$500,000 to $999,999",                      "$1 million to $4.99 million",
  30.                       "$5 million to $ix.99 million",                      "$ten million or more"                      )                      )                    
  31.                   
  32.                   
  33.                       UrbCaption                      <-                      grobTree(                    
  34.                       gp                      =                      gpar(fontsize                      =                      8, hjust                      =                      ane                      ),                    
  35.                       textGrob(label                      =                      "I N South T I T U T E",                    
  36.                       name                      =                      "caption1",
  37.                       x                      =                      unit of measurement(                      1,                      "npc"                      ),                    
  38.                       y                      =                      unit of measurement(                      0,                      "npc"                      ),
  39.                       hjust                      =                      one,                    
  40.                       vjust                      =                      0                      ),
  41.                       textGrob(characterization                      =                      "U R B A N  ",                    
  42.                       10                      =                      unit(                      i,                      "npc"                      )                      -                      grobWidth(                      "caption1"                      )                      -                      unit(                      0.01,                      "lines"                      ),                    
  43.                       y                      =                      unit(                      0,                      "npc"                      ),                    
  44.                       hjust                      =                      i,                    
  45.                       vjust                      =                      0,                    
  46.                       gp                      =                      gpar(                      col                      =                      "#1696d2"                      )                      )                      )                    
  47.                   
  48.                   
  49.                       filigree.arrange                      (Fig1, UrbCaption,                      ncol                      =                      i, heights                      =                      c                      (                      thirty,                      one                      )                      )                    
  50.                   
  51.                   
  52.                       }                    
  53.                   
  54. Fig1Plot(Figure1_2016)                    

Source: Urban Institute, National Center for Charitable Statistics, Core Files (Public Charities, 2016)

Type

  1.                       #Create Table 2 Function                    
  2. Table2                      <-                      function                      (datayear)                      {                    
  3.                       #select core file based on year                    
  4.                       file                      <-                      c                      (                      paste                      (                      "cadre", datayear,                      "pc", sep                      =                      ""                      )                      )                    
  5.                   
  6.                       #get core file                    
  7.                       dataset                      <-                      get                      (                      file                      )                    
  8.                   
  9.                       #filter out organizations below minimum filing threshold for 990-EZ                    
  10.                       dataset                      <-                      if                      (datayear                      <                      2010                      )                      filter                      (dataset,                      (                      (GRREC                      >=                      25000                      )                      |                      (TOTREV>                      25000                      )                      )                      )                      else                      filter                      (dataset,                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      )                      )                    
  11.                   
  12.                       #create table                    
  13.                       Table2<-                      dataset                      %>%                    
  14.                       filter                      (                      (OUTNCCS                      !=                      "OUT"                      ),                      (FNDNCD                      !=                      "02"                      &                      FNDNCD!=                      "03"                      &                      FNDNCD                      !=                      "04"                      )                      )                      %>%                    
  15.                       group_by(NTEEGRP)                      %>%                    
  16.                       summarize(                    
  17.                       Number_of_Orgs                      =                      north(                      ),
  18.                       Revenue                      =                      round                      (                      (                      sum                      (TOTREV, na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      one                      ),
  19.                       Expenses                      =                      round                      (                      (                      sum                      (EXPS, na.rm                      =TRUE)                      )                      /                      1000000000, digits                      =                      1                      ),
  20.                       Assets                      =                      round                      (                      (                      sum                      (ASS_EOY, na.rm                      =TRUE)                      )                      /                      1000000000, digits=                      1                      )                      )                      %>%                    
  21.                       mutate(                    
  22.                       Revenue_PCT                      =                      round                      (                      (Revenue/                      sum                      (Revenue)                      )                      *                      100, digits                      =                      ane                      ),
  23.                       Expenses_PCT                      =                      round                      (                      (Expenses/                      sum                      (Expenses)                      )                      *                      100, digits                      =                      1                      ),
  24.                       Assets_PCT                      =                      round                      (                      (Assets/                      sum                      (Assets)                      )                      *                      100, digits                      =                      1                      ),
  25.                       Numbers_PCT                      =                      round                      (                      (Number_of_Orgs/                      sum                      (Number_of_Orgs)                      )                      *                      100, digits                      =                      1                      )                    
  26.                       )                    
  27.                   
  28.                       #reorder columns                    
  29.                       Table2                      <-                      Table2[,c                      (                      "NTEEGRP",                      "Number_of_Orgs","Numbers_PCT","Revenue","Expenses",                      "Assets",                      "Revenue_PCT",                      "Expenses_PCT","Assets_PCT"                      )                      ]                    
  30.                   
  31.                       #Add total row                    
  32.                       myNumCols                      <-                      which                      (                      unlist                      (                      lapply                      (Table2,                      is.numeric                                            )                      )                      )                    
  33.                       Table2[                      (                      nrow                      (Table2)                      +                      1                      ), myNumCols]                      <-                      colSums                      (Table2[, myNumCols], na.rm                      =Truthful)                    
  34.                       Table2$NTEEGRP[                      xi                      ]                      =                      "All public charities"                    
  35.                   
  36.                       #add All Ed and All health rows                    
  37.                       Table2[                      12,one                      ]                      =                      "Education"                    
  38.                       Table2[                      12,2                      :                      9                      ]                      <-                      Table2[                      3,2                      :                      9                      ]                      +                      Table2[                      7,2                      :                      9                      ]                    
  39.                       Table2[                      13,1                      ]                      =                      "Health"                    
  40.                       Table2[                      xiii,2                      :                      9                      ]                      <-                      Table2[                      4,two                      :                      9                      ]                      +                      Table2[                      eight,2                      :                      9                      ]                    
  41.                   
  42.                       #reorder tabular array with new rows                    
  43.                       t2order                      <-                      c                      (                      "All public charities",                      "Arts",                      "Pedagogy",                      "College education",                      "Other didactics",                      "Surroundings and animals",
  44.                       "Wellness",                      "Hospitals and principal care facilities",                      "Other health care",                      "Human services",
  45.                       "International",                      "Other public and social benefit",                      "Religion related"                      )                    
  46.                   
  47.                       Table2                      <-                      Table2                      %>%                    
  48.                       slice(                      friction match                      (t2order, NTEEGRP)                      )                    
  49.                   
  50.                       #add yr of data cavalcade                    
  51.                       Table2                      <-                      cbind                      (year_of_data                      =                      as.grapheme                                            (datayear), Table2)                    
  52.                   
  53.                       return                      (Table2)                    
  54.                   
  55.                       }                    
  56.                   
  57.                       #Run for Table 2 for 2015 data                    
  58. Table2_2016                      <-                      Table2(params$NCCSDataYr)                    
  59.                       write.csv                                            (Table2_2016,                      "Tables/NSiB_Table2.csv"                      )                    

Tabular array 2 beneath displays the 2016 distribution of public charities by type of arrangement. Homo services groups—such as food banks, homeless shelters, youth services, sports organizations, and family or legal services—equanimous over one-tertiary of all public charities (35.2 percent). They were more than twice as numerous as pedagogy organizations, the next-almost prolific type of organization, which deemed for 17.ii pct of all public charities. Education organizations include booster clubs, parent-teacher associations, and financial aid groups, equally well as academic institutions, schools, and universities. Health intendance organizations, though accounting for only 12.2 per centum of reporting public charities, deemed for nigh three-fifths of public charity revenues and expenses in 2016. Education organizations deemed for 17.three percentage of revenues and 16.9 percent of expenses; human services, despite being more numerous, accounted for comparatively less revenue (eleven.9 percent of the full) and expenses (12.one percent of the total). Hospitals, despite representing only two.2 percent of total public charities (7,054 organizations), accounted for about one-half of all public charity revenues and expenses (49.8 and 50.vi pct, respectively).

TABLE ii

Number and Finances of Reporting Public Charities by Subsector, 2016

  1.                       #Display Tabular array two                    
  2. kable(Table2_2016[                      c                      (                      2                      :                      10                      )                      ], format.args                      =                      listing                      (decimal.mark                      =                      '.', big.marker                      =                      ","                      ),                    
  3.                       "html",
  4.                       marshal                      =                      "lcccccccc",
  5.                       col.names                      =                      c                      (                      "",                      "Number",                      "% of total",                      "Revenues",                      "Expenses",                      "Assets",                      "Revenues",                      "Expenses",                      "Assets"                      )                      )                      %>%                    
  6.                       kable_styling(                      "hover", full_width                      =                      F                      )                      %>%                    
  7.                       row_spec(                      c                      (                      iv,5,8,9                      ), italic                      =                      T                      )                      %>%                    
  8.                       row_spec(                      1, bold                      =                      T                      )                      %>%                    
  9.                       add_indent(                      c                      (                      4,5,eight,nine                      )                      )                      %>%                    
  10.                       add_header_above(                      c                      (                      " "                      =                      iii,                      "Dollar Full ($ billions)"                      =                      3,                      "Percentage of Total"                      =                      3                      )                      )                    

Dollar Total ($ billions)

Percentage of Total

Number % of total Revenues Expenses Assets Revenues Expenses Assets
All public charities 318,015 100.1 ii,041.five i,937.3 three,793.7 100.0 100.0 100.0
Arts 31,894 10.0 40.2 36.9 132.9 2.0 i.ix 3.v
Teaching 54,632 17.ii 353.viii 327.9 ane,144.8 17.iii xvi.nine 30.2
Higher education two,161 0.7 226.four 213.4 740.6 11.i 11.0 xix.5
Other education 52,471 sixteen.5 127.four 114.v 404.2 half dozen.2 5.9 10.vii
Surroundings and animals 14,932 iv.7 nineteen.viii 17.two l.8 1.0 0.9 1.3
Health 38,853 12.2 1,208.5 1,167.eight 1,643.ane 59.2 60.3 43.iii
Hospitals and main care facilities 7,054 2.2 1,016.0 980.1 i,339.1 49.viii 50.6 35.3
Other health intendance 31,799 10.0 192.5 187.7 304.0 9.iv 9.7 viii.0
Human services 111,797 35.two 243.0 234.five 371.4 11.9 12.ane nine.eight
International 6,956 2.ii 39.vii 35.9 44.6 1.9 1.ix 1.two
Other public and social benefit 38,071 12.0 117.1 99.3 369.0 5.7 5.1 9.7
Religion related 20,880 6.6 nineteen.4 17.8 37.1 1.0 0.9 i.0

Source: Urban Institute, National Centre for Charitable Statistics, Core Files (Public Charities, 2016).

Note: Subtotals may non sum to totals because of rounding.

Growth

  1.                       #Create Table 3 part                    
  2. Table3                      <-                      function                      (datayear)                      {                    
  3.                   
  4.                       #define years of interest                    
  5.                       T3grab                      =                      function                      (yr)                      {                    
  6.                       output                      <-                      c                      (                      paste                      (                      "cadre", yr-                      10,                      "pc", sep                      =                      ""                      ),                    
  7.                       paste                      (                      "cadre", yr-                      five,                      "pc", sep                      =                      ""                      ),
  8.                       paste                      (                      "core", yr,                      "pc", sep                      =                      ""                      )                      )                    
  9.                       return                      (                      list                      (output)                      )                    
  10.                       }                    
  11.                   
  12.                   
  13.                       #define financial summarizer                    
  14.                       T3Fin                      <-                      function                      (dataset, yr)                      {                    
  15.                       df                      <-                      get                      (dataset)                    
  16.                   
  17.                       #filter out organizations below minimum filing threshold for 990-EZ                    
  18.                       df                      <-                      if                      (year                      <                      2010                      )                      filter                      (                      df,                      (                      (GRREC                      >=                      25000                      )                      |                      (TOTREV>                      25000                      )                      )                      )                      else                      filter                      (                      df,                      (                      (GRREC                      >=                      50000                      )                      |                      (TOTREV>                      50000                      )                      )                      )                    
  19.                   
  20.                       output                      <-                      df                      %>%                    
  21.                       filter                      (                      (OUTNCCS                      !=                      "OUT"                      ),                      (FNDNCD                      !=                      "02"                      &                      FNDNCD!=                      "03"                      &                      FNDNCD                      !=                      "04"                      )                      )                      %>%                    
  22.                       group_by(NTEEGRP)                      %>%                    
  23.                       summarize(                    
  24.                       Number_of_Orgs                      =                      n(                      ),
  25.                       Acquirement                      =                      round                      (                      (                      sum                      (                      equally.numeric                                            (TOTREV), na.rm                      =True)                      /                      1000000000                      ), digits                      =                      1                      ),
  26.                       Expenses                      =                      round                      (                      (                      sum                      (                      every bit.numeric                                            (EXPS), na.rm                      =TRUE)                      /                      1000000000                      ), digits=                      ane                      ),
  27.                       Avails                      =                      circular                      (                      (                      sum                      (                      as.numeric                                            (ASS_EOY), na.rm                      =TRUE)                      /                      1000000000                      ), digits=                      1                      )                    
  28.                       )                      %>%                    
  29.                       mutate(                    
  30.                       Acquirement                      =                      round                      (                      (Acquirement                      *                      inflindex[                      as.character                                            (datayear),]                      )                      /                      (inflindex[                      as.character                                            (twelvemonth),]                      ), digits                      =                      1                      ),
  31.                       Expenses                      =                      round                      (                      (Expenses                      *                      inflindex[                      every bit.character                                            (datayear),]                      )                      /                      (inflindex[                      as.character                                            (year),]                      ), digits                      =                      1                      ),
  32.                       Assets                      =                      round                      (                      (Assets                      *                      inflindex[                      equally.character                                            (datayear),]                      )                      /                      (inflindex[                      as.character                                            (twelvemonth),]                      ), digits                      =                      i                      )                    
  33.                       )                    
  34.                       colnames                      (output)                      [                      two                      :                      5                      ]                      <-                      paste                      (                      colnames                      (output)                      [                      2                      :                      5                      ], twelvemonth, sep                      =                      "_"                      )                    
  35.                       return                      (output)                    
  36.                       }                    
  37.                   
  38.                       #run grabber for years of interest                    
  39.                       T3years                      <-T3grab(datayear)                    
  40.                   
  41.                       #pull each twelvemonth                    
  42.                       comp1                      <-                      T3Fin(T3years[                      [                      1                      ]                      ]                      [                      1                      ],                      (datayear-                      10                      )                      )                    
  43.                       comp2                      <-                      T3Fin(T3years[                      [                      ane                      ]                      ]                      [                      2                      ],                      (datayear-                      5                      )                      )                    
  44.                       comp3                      <-                      T3Fin(T3years[                      [                      1                      ]                      ]                      [                      three                      ], datayear)                    
  45.                   
  46.                       #merge tables                    
  47.                       Table3                      <-                      comp1                      %>%                    
  48.                       left_join(comp2,                      by                      =                      "NTEEGRP"                      )                      %>%                    
  49.                       left_join(comp3,                      by                      =                      "NTEEGRP"                      )                    
  50.                   
  51.                       #reorder columns                    
  52.                       Table3IA                      <-                      Table3[,                      c                      (                      i,2,6,ten,iii,7,eleven,4,viii,12,5,9,13                      )                      ]                    
  53.                   
  54.                       #Add total row                    
  55.                       myNumCols                      <-                      which                      (                      unlist                      (                      lapply                      (Table3IA,                      is.numeric                                            )                      )                      )                    
  56.                       Table3IA[                      (                      nrow                      (Table3IA)                      +                      1                      ), myNumCols]                      <-                      colSums                      (Table3IA[, myNumCols], na.rm                      =Truthful)                    
  57.                       Table3IA$NTEEGRP[                      11                      ]                      =                      "All public charities"                    
  58.                   
  59.                       #add together All Ed and All health rows                    
  60.                       Table3IA[                      12,1                      ]                      =                      "Education"                    
  61.                       Table3IA[                      12,ii                      :                      thirteen                      ]                      <-                      Table3IA[                      3,2                      :                      13                      ]                      +                      Table3IA[                      7,two                      :                      13                      ]                    
  62.                       Table3IA[                      13,one                      ]                      =                      "Health"                    
  63.                       Table3IA[                      13,2                      :                      xiii                      ]                      <-                      Table3IA[                      4,2                      :                      13                      ]                      +                      Table3IA[                      viii,2                      :                      13                      ]                    
  64.                   
  65.                       #reorder tabular array with new rows                    
  66.                       t3order                      <-                      c                      (                      "All public charities",                      "Arts",                      "Education",                      "Higher education",                      "Other education",                      "Environment and animals",
  67.                       "Wellness",                      "Hospitals and primary intendance facilities",                      "Other health intendance",                      "Homo services",
  68.                       "International",                      "Other public and social benefit",                      "Religion related"                      )                    
  69.                   
  70.                       Table3IA                      <-                      Table3IA                      %>%                    
  71.                       slice(                      friction match                      (t3order, NTEEGRP)                      )                    
  72.                   
  73.                       #add year of data column                    
  74.                       Table3IA                      <-                      cbind                      (year_of_data                      =                      as.character                                            (datayear), Table3IA)                    
  75.                   
  76.                       return                      (Table3IA)                    
  77.                       }                    
  78.                   
  79.                       #Run Table 3 for 2016 data                    
  80. Table3_2016                      <-                      Table3(params$NCCSDataYr)                    
  81.                       write.csv                                            (Table3_2016,                      "Tables/NSiB_Table3.csv"                      )                    
  82.                   
  83.                       ####################################################                    
  84.                   
  85.                       #Create Table 4 office                    
  86. Table4                      <-                      function                      (datayear)                      {                    
  87.                   
  88.                       #start with table 3 data                    
  89.                       Table4                      <-                      Table3(datayear)                    
  90.                   
  91.                       #calculate percentage change fields                    
  92.                       Table4                      <-                      Table4                      %>%                    
  93.                       mutate(                    
  94.                       RevAtoC                      =                      round                      (                      (                      (Table4[,8                      ]                      -                      Table4[,6                      ]                      )                      /                      (Table4[,6                      ]                      )                      )                      *                      100,1                      ),
  95.                       RevAtoB                      =                      round                      (                      (                      (Table4[,seven                      ]                      -                      Table4[,6                      ]                      )                      /                      (Table4[,half-dozen                      ]                      )                      )                      *                      100,ane                      ),
  96.                       RevBtoC                      =                      circular                      (                      (                      (Table4[,8                      ]                      -                      Table4[,7                      ]                      )                      /                      (Table4[,7                      ]                      )                      )                      *                      100,ane                      ),
  97.                       ExpsAtoC                      =                      circular                      (                      (                      (Table4[,xi                      ]                      -                      Table4[,nine                      ]                      )                      /                      (Table4[,9                      ]                      )                      )                      *                      100,ane                      ),
  98.                       ExpsAtoB                      =                      round                      (                      (                      (Table4[,ten                      ]                      -                      Table4[,9                      ]                      )                      /                      (Table4[,9                      ]                      )                      )                      *                      100,1                      ),
  99.                       ExpsBtoC                      =                      round                      (                      (                      (Table4[,11                      ]                      -                      Table4[,ten                      ]                      )                      /                      (Table4[,ten                      ]                      )                      )                      *                      100,1                      ),
  100.                       AssAtoC                      =                      circular                      (                      (                      (Table4[,14                      ]                      -Table4[,12                      ]                      )                      /                      (Table4[,12                      ]                      )                      )                      *                      100,i                      ),
  101.                       AssAtoB                      =                      round                      (                      (                      (Table4[,13                      ]                      -                      Table4[,12                      ]                      )                      /                      (Table4[,12                      ]                      )                      )                      *                      100,1                      ),
  102.                       AssBtoC                      =                      round                      (                      (                      (Table4[,14                      ]                      -                      Table4[,xiii                      ]                      )                      /                      (Table4[,13                      ]                      )                      )                      *                      100,ane                      )                    
  103.                   
  104.                       )                    
  105.                   
  106.                       #driblet intermediary raw number columns                    
  107.                       Table4                      <-                      Table4[                      -                      (                      3                      :                      14                      )                      ]                    
  108.                   
  109.                       #rename columns by year                    
  110.                       colnames                      (Table4)                      [                      three                      ]                      <-                      paste                      (                      "Revenue", datayear-                      10,                      "\u2013", datayear, sep                      =                      "_"                      )                    
  111.                       colnames                      (Table4)                      [                      4                      ]                      <-                      paste                      (                      "Revenue", datayear-                      10,                      "\u2013", datayear-                      v, sep                      =                      "_"                      )                    
  112.                       colnames                      (Table4)                      [                      five                      ]                      <-                      paste                      (                      "Revenue", datayear-                      5,                      "\u2013", datayear, sep                      =                      "_"                      )                    
  113.                       colnames                      (Table4)                      [                      6                      ]                      <-                      paste                      (                      "Expenses", datayear-                      10,                      "\u2013", datayear, sep                      =                      "_"                      )                    
  114.                       colnames                      (Table4)                      [                      vii                      ]                      <-                      paste                      (                      "Expenses", datayear-                      x,                      "\u2013", datayear-                      5, sep                      =                      "_"                      )                    
  115.                       colnames                      (Table4)                      [                      8                      ]                      <-                      paste                      (                      "Expenses", datayear-                      5,                      "\u2013", datayear, sep                      =                      "_"                      )                    
  116.                       colnames                      (Table4)                      [                      9                      ]                      <-                      paste                      (                      "Assets", datayear-                      10,                      "\u2013", datayear, sep                      =                      "_"                      )                    
  117.                       colnames                      (Table4)                      [                      10                      ]                      <-                      paste                      (                      "Assets", datayear-                      x,                      "\u2013", datayear-                      five, sep                      =                      "_"                      )                    
  118.                       colnames                      (Table4)                      [                      xi                      ]                      <-                      paste                      (                      "Assets", datayear-                      5,                      "\u2013", datayear, sep                      =                      "_"                      )                    
  119.                   
  120.                       #return output                    
  121.                       return                      (Table4)                    
  122.                   
  123.                       }                    
  124.                   
  125.                       #Run Tabular array 4 for 2016 data                    
  126. Table4_2016                      <-                      Table4(params$NCCSDataYr)                    
  127.                       write.csv                                            (Table4_2016,"Tables/NSiB_Table4.csv"                      )                    

The number of reporting public charities in 2016 was approximately 1 pct college than the number in 2015. The total revenues, expenses, and assets for reporting public charities all increased between 2015 and 2016; after adjusting for inflation, revenues rose 1.9 percent, expenses rose 4 percent, and avails rose 2.1 percentage.

These trends are indicative of larger growth in the sector: both the number and finances of organizations in the nonprofit sector have grown over the past 10 years. Simply this growth has differed past subsector and period (table iii). Subsectors experienced varying degrees of financial expansion: although all subsectors reported increases in acquirement in 2016 compared with 2006 (even after adjusting for inflation), a few decreased in number of nonprofits, including arts, pedagogy (excluding college education), wellness, and other public and social do good organizations. Consequently, these organizations deemed for a slightly lower proportion of the full sector in 2016 (l.vii percent) than they did in 2006 (53.5 percent). The smallest subsectors (international and foreign affairs organizations and environs and animals organizations) saw the largest growth rates in the number of organizations, increasing 16 and 10.i percentage, respectively, from 2006 to 2016.

Financially, religion-related organizations had the largest proportional increase in both acquirement and expenses, growing from $13.2 billion in revenue in 2006 to $19.4 billion in 2016 after adjusting for inflation (a change of 47 percent). Environment and animals organizations experienced similar growth, growing from $14.half dozen billion in revenue in 2006 to $19.8 billion in 2016 subsequently adjusting for aggrandizement (a change of 35.half-dozen percent). Both types of organizations, all the same, still account for a very pocket-size proportion of overall nonprofit sector revenue in 2016, at just about ane percent each. Wellness-related organizations, which account for a much larger proportion of overall sector finances (59.two, 60.3 and 43.iii percent, respectively, of revenues, expenses, and avails), also experienced considerable growth between 2006 and 2016. Revenues for hospitals and primary care facilities, in particular, increased from $739.seven billion in 2006 to $1016 billion in 2016 after adjusting for inflation, past far the largest dollar growth of whatever subsector during this period. The growth for the health sector, $331.4 billion, accounts for over three-fifths of the growth of the entire nonprofit sector between 2006 and 2016 ($505.ane billion).

Table 3

Number, Revenues, and Assets of Reporting Public Charities past Subsector, 2006–2016 (adjusted for aggrandizement)

  1.                       #Display Tabular array iii                    
  2. kable(Table3_2016[                      c                      (                      2                      :                      14                      )                      ], format.args                      =                      list                      (decimal.marker                      =                      '.', big.mark                      =                      ","                      ),                    
  3.                       "html",
  4.                       col.names                      =                      c                      (                      "",                      "2006",                      "2011",                      "2016",                      "2006",                      "2011",                      "2016",                      "2006",                      "2011",                      "2016",                      "2006",                      "2011",                      "2016"                      ),
  5.                       align                      =                      "lcccccccccccc"                      #,                    
  6.                       )                      %>%                    
  7.                       kable_styling(                      "hover", full_width                      =                      F                      )                      %>%                    
  8.                       row_spec(                      c                      (                      4,five,8,9                      ), italic                      =                      T                      )                      %>%                    
  9.                       row_spec(                      1, assuming                      =                      T                      )                      %>%                    
  10.                       add_indent(                      c                      (                      4,5,viii,ix                      )                      )                      %>%                    
  11.                       add_header_above(                      c                      (                      " ",                      "Number of Organizations"                      =                      three,                      "Acquirement ($ billions)"                      =                      3,                      "Expenses ($ billions)"                      =                      iii,                      "Assets ($ billions)"                      =                      3                      )                      )                    

Number of Organizations

Revenue ($ billions)

Expenses ($ billions)

Assets ($ billions)

2006 2011 2016 2006 2011 2016 2006 2011 2016 2006 2011 2016
All public charities 326,246 287,318 318,015 1,536.4 1,698.5 2,041.5 i,394.5 1,596.7 one,937.3 2,705.ii three,015.seven 3,793.vii
Arts 36,065 28,579 31,894 35.four 32.5 40.2 29.0 29.8 36.9 106.1 107.6 132.9
Instruction 58,663 49,223 54,632 273.vii 286.8 353.viii 225.ane 259.8 327.9 835.viii 906.viii one,144.eight
College education 1,933 2,013 ii,161 179.1 186.5 226.4 147.seven 169.four 213.4 557.2 585.half dozen 740.6
Other pedagogy 56,730 47,210 52,471 94.vi 100.iii 127.4 77.iv ninety.4 114.v 278.6 321.2 404.2
Environment and animals 13,565 12,547 14,932 fourteen.6 xv.eight nineteen.eight xi.9 fourteen.2 17.ii 34.9 38.ii l.8
Health 41,753 37,828 38,853 877.1 i,008.0 1,208.5 826.7 957.8 ane,167.8 1,083.half dozen 1,284.3 ane,643.ane
Hospitals and principal care facilities 7,266 vii,093 vii,054 739.7 854.5 one,016.0 702.3 811.vii 980.1 858.half-dozen i,040.i 1,339.1
Other health intendance 34,487 30,735 31,799 137.four 153.5 192.five 124.iv 146.1 187.vii 225.0 244.2 304.0
Man services 110,226 102,321 111,797 198.3 215.4 243.0 187.3 208.4 234.5 291.3 322.3 371.4
International 5,999 half dozen,047 6,956 31.0 30.8 39.7 28.1 xxx.0 35.nine 31.7 31.nine 44.6
Other public and social do good 40,029 33,365 38,071 93.1 94.7 117.one 74.9 83.5 99.iii 292.5 292.7 369.0
Religion related 19,946 17,408 20,880 thirteen.ii fourteen.5 19.4 11.5 xiii.2 17.8 29.three 31.ix 37.one

Source: Urban Institute, National Center for Charitable Statistics, Cadre Files (Public Charities, 2006, 2011, and 2016).

Notation: Subtotals may not sum to totals because of rounding.

Public charities' financial growth within the given bridge largely occurred within the second half (tabular array 4). From 2006 to 2011, revenue and assets for all public charities increased 10.half dozen and eleven.5 percent, respectively, but both grew much more quickly in the years following: 20.two percent for revenues and 25.eight percent for avails, later adjusting for inflation. Further, expenses grew much faster than revenues betwixt 2006 and 2011, with expenses increasing 14.5 per centum (compared with revenues increasing 10.6 per centum). Merely between 2011 and 2016 growth in expenses (21.3 percent) was outpaced past the growth in revenues (20.ii percent).

These periods of growth varied by subsector, however. Two subsectors experienced declining revenue betwixt 2006 and 2011: arts, culture, and humanities organizations and other public and social benefit organizations. Of the two, other public and social benefit organizations experienced the larger decline, falling $-1.6 billion in revenue from 2006 to 2011, a decline of -1.7 pct. However, both subsectors experienced substantial revenue increases from 2011 to 2016: revenue for other public and social do good organizations grew 23.7 percentage during those v years, while revenue for arts, civilization and humanities organizations grew 23.7 percent. Both revenue growth rates were well higher up the growth charge per unit for human services organizations, which at 12.8 percent was the lowest for any subsector within that menstruation.

Table 4

Per centum Modify in Revenue, Expenses, and Assets of Reporting Public Charities by Subsector, 2006–2016 (adjusted for inflation)

  1.                       #Display Table 4 Information                    
  2. kable(Table4_2016[                      c                      (                      two                      :                      eleven                      )                      ], format.args                      =                      list                      (decimal.mark                      =                      '.', large.mark                      =                      ","                      ),                    
  3.                       "html",
  4.                       col.names                      =                      c                      (                      "",                      paste                      (                      "2006",                      "\u2014",                      "16", sep                      =                      ""                      ),                      paste                      (                      "2006",                      "\u2014",                      "eleven", sep                      =                      ""                      ),                      paste                      (                      "2011",                      "\u2014",                      "16", sep                      =                      ""                      ),                      paste                      (                      "2006",                      "\u2014",                      "16", sep                      =                      ""                      ),                      paste                      (                      "2006",                      "\u2014",                      "11", sep                      =                      ""                      ),                      paste                      (                      "2011",                      "\u2014",                      "16", sep                      =                      ""                      ),                      paste                      (                      "2006",                      "\u2014",                      "xvi", sep                      =                      ""                      ),                      paste                      (                      "2006",                      "\u2014",                      "11", sep                      =                      ""                      ),                      paste                      (                      "2011",                      "\u2014",                      "16", sep                      =                      ""                      )                      ),
  5.                       align                      =                      "lccccccccc"                      )                      %>%                    
  6.                       kable_styling(                      "hover", full_width                      =                      F                      )                      %>%                    
  7.                       row_spec(                      c                      (                      four,5,8,9                      ), italic                      =                      T                      )                      %>%                    
  8.                       row_spec(                      1, bold                      =                      T                      )                      %>%                    
  9.                       add_indent(                      c                      (                      4,five,8,9                      )                      )                      %>%                    
  10.                       add_header_above(                      c                      (                      " ",                      "Modify in Revenues"                      =                      3,                      "Change in Expenses"                      =                      iii,"Change in Avails"                      =                      iii                      )                      )                    

Alter in Revenues

Change in Expenses

Change in Assets

2006—16 2006—11 2011—16 2006—16 2006—xi 2011—16 2006—sixteen 2006—11 2011—16
All public charities 32.nine 10.6 twenty.two 38.9 14.5 21.three 40.2 11.v 25.8
Arts thirteen.6 -8.2 23.7 27.2 2.8 23.8 25.3 1.4 23.5
Education 29.three 4.8 23.4 45.seven fifteen.4 26.ii 37.0 8.5 26.2
College education 26.4 iv.1 21.four 44.five fourteen.vii 26.0 32.ix five.1 26.five
Other educational activity 34.vii half dozen.0 27.0 47.9 16.8 26.vii 45.1 xv.iii 25.eight
Environs and animals 35.vi viii.2 25.iii 44.5 19.3 21.1 45.half dozen ix.v 33.0
Wellness 37.viii 14.9 nineteen.ix 41.3 15.nine 21.ix 51.6 18.5 27.9
Hospitals and primary intendance facilities 37.iv xv.5 18.9 39.half-dozen 15.half dozen 20.7 56.0 21.1 28.7
Other health care forty.1 11.vii 25.iv 50.9 17.4 28.five 35.1 eight.5 24.5
Human being services 22.5 8.6 12.8 25.2 eleven.3 12.5 27.5 ten.six 15.2
International 28.1 -0.6 28.9 27.8 half dozen.8 19.7 40.7 0.vi 39.viii
Other public and social benefit 25.8 1.7 23.vii 32.6 11.v xviii.ix 26.2 0.1 26.1
Organized religion related 47.0 9.8 33.8 54.8 14.8 34.8 26.6 8.nine 16.three

Source: Urban Establish, National Center for Charitable Statistics, Core Files (Public Charities, 2006, 2011, and 2016).

Note: Subtotals may not sum to totals because of rounding.

Back to pinnacle

Giving

Giving Amounts

  1.                       #Create Figure 2 underlying table                    
  2.                   
  3.                       #Import Figure ii raw data (available from Giving USA 2018, https://givingusa.org/)                    
  4. Figure2                      <-                      read_csv(                      "External_Data/GivingUSACont.csv",
  5.                       col_types                      =                      cols_only(Years                      =                      col_integer(                      ),
  6.                       Current_Dollars                      =                      col_double(                      )                    
  7.                       )                      )                    
  8.                       #Adjust for aggrandizement                    
  9. Figure2                      <-                      Figure2                      %>%                    
  10.                       mutate(                    
  11.                       'Abiding (2017) Dollars'                      =                      round                      (                      (Current_Dollars                      *                      inflindex[                      as.character                                            (                      2018                      ),]                      )                      /                      (inflindex[                      equally.character                                            (Years),]                      ), digits                      =                      2                      )                    
  12.                       )                    
  13.                       #Add Column Names                    
  14.                       colnames                      (Figure2)                      <-                      c                      (                      "Yr",                      "Current dollars",                      "Constant (2018) dollars"                      )                    
  15.                   
  16. Figure2                      <-                      Figure2                      %>%                    
  17.                       melt(id                      =                      "Year"                      )                    
  18.                   
  19.                       colnames                      (Figure2)                      [                      2                      ]                      <-                      "Contributions"                    
  20.                   
  21.                       #Write final table to CSV                    
  22.                       write.csv                                            (Figure2,                      "Figures/NSiB_Figure2_Table.csv"                      )                    

Private charitable contributions reached an estimated $427.71 billion in 2018, as shown in figure 2 below (Giving United states Foundation 2019). Although total charitable giving has been increasing for four consecutive years, first with 2014. In 2018, total charitable giving decreased -i.vii percent from 2017.

FIGURE 2

Private Charitable Contributions 2000-2018

  1.                       #Create Figure ii                    
  2. Fig2Plot                      <-                      role                      (Fig2Table)                      {                    
  3.                   
  4.                       Fig2                      <-                      Fig2Table                      %>%                    
  5.                       ggplot(aes(10=Twelvemonth, y                      =value, make full                      =                      Contributions)                      )                      +                    
  6.                       geom_bar(position                      =                      "contrivance", stat                      =                      "identity"                      )                      +                    
  7.                       geom_text(aes(label                      =                      formatC                      (                      round                      (value,ii                      ),                      format                      =                      'f', digits                      =                      2                      )                      ),
  8.                       position=                      position_dodge(width=                      1                      ),                    
  9.                       hjust                      =-.one,
  10.                       size=                      three                      )                      +                    
  11.                       scale_y_continuous(expand                      =                      c                      (                      0,                      0                      ), limits                      =                      c                      (                      0,460                      )                      )                      +                    
  12.                       scale_x_continuous(breaks                      =                      2000                      :                      2018                      )                      +                    
  13.                       theme(axis.text.x                      =                      element_blank(                      ),
  14.                       axis.ticks.x                      =                      element_blank(                      ),
  15.                       panel.filigree.major                      =                      element_blank(                      )                      #,                    
  16.                       # axis.title.y = element_text(angle=0)                    
  17.                       )                      +                    
  18.                       labs(                      #title = "Effigy 2",                    
  19.                       #subtitle = "Private Charitable Contributions, 2000-2016",                    
  20.                       #explanation = "Giving USA Foundation (2018)",                    
  21.                       x                      =                      "Year",
  22.                       y                      =                      ""                      )                      +                    
  23.                       coord_flip(                      )                    
  24.                   
  25.                       UrbCaption                      <-                      grobTree(                    
  26.                       gp                      =                      gpar(fontsize                      =                      8, hjust                      =                      ane                      ),                    
  27.                       textGrob(label                      =                      "I Due north S T I T U T E",                    
  28.                       name                      =                      "caption1",
  29.                       x                      =                      unit(                      1,                      "npc"                      ),                    
  30.                       y                      =                      unit(                      0,                      "npc"                      ),
  31.                       hjust                      =                      1,                    
  32.                       vjust                      =                      0                      ),
  33.                       textGrob(label                      =                      "U R B A Northward  ",                    
  34.                       10                      =                      unit(                      1,                      "npc"                      )                      -                      grobWidth(                      "caption1"                      )                      -                      unit(                      0.01,                      "lines"                      ),                    
  35.                       y                      =                      unit of measurement(                      0,                      "npc"                      ),                    
  36.                       hjust                      =                      1,                    
  37.                       vjust                      =                      0,                    
  38.                       gp                      =                      gpar(                      col                      =                      "#1696d2"                      )                      )                      )                    
  39.                   
  40.                   
  41.                       grid.adapt                      (Fig2, UrbCaption,                      ncol                      =                      1, heights                      =                      c                      (                      30,                      1                      )                      )                    
  42.                       }                    
  43.                   
  44. Fig2Plot(Figure2)                    

Source: Giving USA Foundation (2019).

Recipients

  1.                       #Create Table 5                    
  2.                   
  3.                       #Import raw Table five data (available from Giving Us 2018, https://givingusa.org/)                    
  4. Table5                      <-                      read_csv(                      "External_Data/GivingUSAType.csv",
  5.                       col_types=                      cols_only(Type                      =                      col_character(                      ),
  6.                       Year2013                      =                      col_double(                      ),
  7.                       Year2018                      =                      col_double(                      )                      )                      )                    
  8.                       #Calculate percentage change                    
  9. Table5                      <-                      Table5                      %>%                    
  10.                       mutate(PCt_change                      =                      Year2018                      -                      Year2013)                    
  11.                   
  12.                       #Rename Columns                    
  13.                       colnames                      (Table5)                      <-                      c                      (                      "Charity type",                      "% of all contributions, 2013",                      "% of all contributions, 2018",                      paste                      (                      "% bespeak change, 2013",                      "\u2013",                      "18", sep                      =                      ""                      )                      )                    
  14.                   
  15.                       #Write final table to CSV                    
  16.                       write.csv                                            (Table5,                      "Tables/NSiB_Table5.csv"                      )                    

Congregations and religious organizations received just under a tertiary (29.6 percentage) of all charitable contributions in 2018 (table five), a lower proportion than they received five years earlier in 2013 (32.two percent). Instruction organizations received the next-highest share of private charitable contributions (13.ix per centum), which is the same proportion received in 2013 (also 13 percent of all donations). Man services organizations received the third-highest pro portion of all contributions in 2018 (12.2 percent), but this is a slight pass up from their 2013 proportion (12 percent). Gifts to individuals fabricated up the smallest proportion of full contributions in 2018: two.one percent.

Table 5

Charitable Contributions past Type of Recipient Organizations, 2018

  1.                       #Display Tabular array five                    
  2. kable(Table5, format.args                      =                      list                      (decimal.mark                      =                      '.', big.mark                      =                      ","                      ),                    
  3.                       "html",
  4.                       align                      =                      "lccc"                      )                      %>%                    
  5.                       kable_styling(                      "hover", full_width                      =                      F                      )                    
Charity blazon % of all contributions, 2013 % of all contributions, 2018 % signal change, 2013–xviii
Religion 32.2 29.half-dozen -two.6
Education 13.0 13.nine 0.9
Homo services 12.0 12.ii 0.two
Gifts to foundations eleven.9 xi.ix 0.0
Health 9.four 9.7 0.three
International diplomacy five.vii 5.4 -0.three
Public-society benefit 7.ane seven.4 0.three
Arts, culture, and humanities 4.3 4.6 0.three
Environment and animals ii.5 3.0 0.v
Gifts to individuals 2.1 ii.2 0.1

Source: Giving USA Foundation (2019).

Foundations

  1.                       #Import Raw Figure 3 data (available from the Foundation Center Foundation Stats, http://data.foundationcenter.org/)                    
  2. Figure3                      <-                      read_csv(                      "External_Data/FoundationCenter.csv",
  3.                       col_types                      =                      cols_only(Twelvemonth                      =                      col_integer(                      ),
  4.                       Foundations                      =                      col_integer(                      ),
  5.                       Grants                      =                      col_double(                      ),
  6.                       Avails                      =                      col_double(                      )                    
  7.                       )                      )                    
  8.                       #Suit for inflation                    
  9. Figure3                      <-                      Figure3                      %>%                    
  10.                       mutate(                    
  11.                       Constant_Grants                      =                      round                      (                      (Grants                      *                      inflindex[                      as.character                                            (                      2017                      ),]                      )                      /                      (inflindex[                      as.character                                            (Twelvemonth),]                      ), digits                      =                      1                      ),
  12.                       Constant_Assets                      =                      circular                      (                      (Assets                      *                      inflindex[                      every bit.grapheme                                            (                      2017                      ),]                      )                      /                      (inflindex[                      every bit.character                                            (Year),]                      ), digits                      =                      1                      )                    
  13.                       )                    
  14.                   
  15.                       #write concluding tabular array to csv                    
  16.                       write.csv                                            (Figure3,                      "Figures/NSiB_Figure3_Table.csv"                      )                    

The Foundation Heart (2019) estimates there were more than 86,125 grantmaking foundations in the United States in 2017. Their grants, a component of individual charitable contributions, totaled $77.7 billion in 2017, up 10.4 percent from 2016 after adjusting for aggrandizement (effigy 3). Between 2005 and 2017, foundation grantmaking increased 70 percent afterwards adjusting for inflation. Foundation avails also grew over the same period, increasing 46.6 percent from $691 billion in 2005 to $1012.9 billion in 2017 after adjusting for inflation.

FIGURE iii

Number of Foundations and Corporeality of Grants Made by Twelvemonth, 2005-2017

  1.                       #Graph Figure three Table                    
  2. Fig3Plot                      <-                      part                      (Fig3Table)                      {                    
  3.                   
  4.                       Fig3                      <-                      Fig3Table                      %>%                    
  5.                       ggplot(aes(x=Yr)                      )                      +                    
  6.                       geom_bar(aes(y=Foundations, fill up=                      "Foundations"                      ), stat                      =                      "identity"                      )                      +                    
  7.                       geom_line(aes(y=Constant_Grants*                      1000, color                      =                      "Grants made"                      ), size                      =                      ii                      )                      +                    
  8.                       scale_y_continuous(aggrandize                      =                      c                      (                      0,                      0                      ), limits                      =                      c                      (                      0,100000                      ),
  9.                       sec.centrality                      =                      sec_axis(~./                      1000, name                      =                      "Grants made ($ billions)"                      ),
  10.                       labels                      =                      scales::                      comma                      )                      +                    
  11.                       scale_x_continuous(breaks                      =                      2005                      :                      2017                      )                      +                    
  12.                       labs(                      #caption = "The Foundation Middle, Foundation Stats (2019)",                    
  13.                       x                      =                      "Year",
  14.                       y                      =                      "Number of foundations"                      )                      +                    
  15.                       scale_color_manual(                      "", values                      =                      c                      (                      "Foundations"                      =                      "#1696d2",                      "Grants made"                      =                      "black"                      )                      )                      +                    
  16.                       scale_fill_manual(                      "  ", values                      =                      "#1696d2"                      )                    
  17.                   
  18.                       UrbCaption                      <-                      grobTree(                    
  19.                       gp                      =                      gpar(fontsize                      =                      viii, hjust                      =                      1                      ),                    
  20.                       textGrob(characterization                      =                      "I N S T I T U T E",                    
  21.                       name                      =                      "caption1",
  22.                       10                      =                      unit of measurement(                      1,                      "npc"                      ),                    
  23.                       y                      =                      unit(                      0,                      "npc"                      ),
  24.                       hjust                      =                      1,                    
  25.                       vjust                      =                      0                      ),
  26.                       textGrob(label                      =                      "U R B A North  ",                    
  27.                       x                      =                      unit of measurement(                      1,                      "npc"                      )                      -                      grobWidth(                      "caption1"                      )                      -                      unit(                      0.01,                      "lines"                      ),                    
  28.                       y                      =                      unit(                      0,                      "npc"                      ),                    
  29.                       hjust                      =                      1,                    
  30.                       vjust                      =                      0,                    
  31.                       gp                      =                      gpar(                      col                      =                      "#1696d2"                      )                      )                      )                    
  32.                   
  33.                       grid.arrange                      (Fig3, UrbCaption,                      ncol                      =                      one, heights                      =                      c                      (                      xxx,                      1                      )                      )                    
  34.                       }                    
  35.                   
  36. Fig3Plot(Figure3)                    

Source: The Foundation Eye, Foundation Stats (2019).

Back to top

Volunteering

  1.                       #Calculate proportion of volunteering hours                    
  2.                       #Data taken from Bureau of Labor Statistics: American Time Apply Survey 2018 (https://www.bls.gov/tus/datafiles_2018.htm)                    
  3.                   
  4.                       #Data downloaded and saved locally, read in files:                    
  5. respondent18                      <-                      read_csv(                      "External_Data/atusresp_2017.dat", na                      =                      "-1"                      )                    
  6. activity18                      <-                      read_csv(                      "External_Data/atussum_2017.dat", na                      =                      "-1"                      )                    
  1.                       #Code to analyze American Fourth dimension Utilise Survey Information                    
  2.                   
  3.                       #Step 1: alter variable names to lowercase                    
  4.                       names                      (respondent18)                      <-                      tolower                      (                      names                      (respondent18)                      )                    
  5.                       names                      (activity18)                      <-                      tolower                      (                      names                      (activity18)                      )                    
  6.                   
  7.                       #Stride ii: join respondent and activity data                    
  8. atus18                      <-                      left_join(respondent18, activity18,                      by                      =                      "tucaseid"                      )                    
  9.                   
  10.                       #Step 3: Create volunteering subset by filtering cases without any volunteering hours                    
  11. atus18vol                      <-                      atus18                      %>%                    
  12.                       filter                      (t150101>                      0                      |                    
  13.                       t150102>                      0                      |                    
  14.                       t150103>                      0                      |                    
  15.                       t150104>                      0                      |                    
  16.                       t150105>                      0                      |                    
  17.                       t150106>                      0                      |                    
  18.                       t150199>                      0                      |                    
  19.                       t150201>                      0                      |                    
  20.                       t150202>                      0                      |                    
  21.                       t150203>                      0                      |                    
  22.                       t150204>                      0                      |                    
  23.                       t150299>                      0                      |                    
  24.                       t150301>                      0                      |                    
  25.                       t150302>                      0                      |                    
  26.                       t150399>                      0                      |                    
  27.                       t150401>                      0                      |                    
  28.                       t150402>                      0                      |                    
  29.                       t150499>                      0                      |                    
  30.                       t150501>                      0                      |                    
  31.                       t150599>                      0                      |                    
  32.                       t150601>                      0                      |                    
  33.                       t150602>                      0                      |                    
  34.                       t150699>                      0                      |                    
  35.                       t150701>                      0                      |                    
  36.                       t150799>                      0                      |                    
  37.                       #t150801>0 | #(note: commented out because not available in 2017 ATUS)                    
  38.                       #t150899>0 |  #(note: commented out because not bachelor in 2017 ATUS)                    
  39.                       t159999>                      0                      |                    
  40.                       t181501>                      0                      |                    
  41.                       t181599>                      0                      )                    
  42.                   
  43.                       #Step 4: summate weighted volunteering hours                    
  44. atus18vol                      <-                      atus18vol                      %>%                    
  45.                       mutate(                    
  46.                       t150101w                      =                      tufinlwgt.x                      *                      t150101,
  47.                       t150102w                      =                      tufinlwgt.ten                      *                      t150102,                    
  48.                       t150103w                      =                      tufinlwgt.10                      *                      t150103,                    
  49.                       t150104w                      =                      tufinlwgt.x                      *                      t150104,                    
  50.                       t150105w                      =                      tufinlwgt.x                      *                      t150105,                    
  51.                       t150106w                      =                      tufinlwgt.x                      *                      t150106,                    
  52.                       t150199w                      =                      tufinlwgt.x                      *                      t150199,                    
  53.                       t150201w                      =                      tufinlwgt.10                      *                      t150201,                    
  54.                       t150202w                      =                      tufinlwgt.x                      *                      t150202,                    
  55.                       t150203w                      =                      tufinlwgt.ten                      *                      t150203,                    
  56.                       t150204w                      =                      tufinlwgt.x                      *                      t150204,                    
  57.                       t150299w                      =                      tufinlwgt.x                      *                      t150299,                    
  58.                       t150301w                      =                      tufinlwgt.x                      *                      t150301,                    
  59.                       t150302w                      =                      tufinlwgt.ten                      *                      t150302,                    
  60.                       t150399w                      =                      tufinlwgt.x                      *                      t150399,                    
  61.                       t150401w                      =                      tufinlwgt.10                      *                      t150401,                    
  62.                       t150402w                      =                      tufinlwgt.x                      *                      t150402,                    
  63.                       t150499w                      =                      tufinlwgt.x                      *                      t150499,                    
  64.                       t150501w                      =                      tufinlwgt.x                      *                      t150501,                    
  65.                       t150599w                      =                      tufinlwgt.x                      *                      t150599,                    
  66.                       t150601w                      =                      tufinlwgt.x                      *                      t150601,                    
  67.                       t150602w                      =                      tufinlwgt.x                      *                      t150602,                    
  68.                       t150699w                      =                      tufinlwgt.x                      *                      t150699,                    
  69.                       t150701w                      =                      tufinlwgt.x                      *                      t150701,                    
  70.                       t150799w                      =                      tufinlwgt.x                      *                      t150799,                    
  71.                       #t150801w = tufinlwgt.x* t150801, (annotation: commented out because not available in 2017 ATUS)                    
  72.                       #t150899w = tufinlwgt.x* t150899, (note: commented out because not available in 2017 ATUS)                    
  73.                       t159999w                      =                      tufinlwgt.10                      *                      t159999,                    
  74.                       t181501w                      =                      tufinlwgt.x                      *                      t181501,                    
  75.                       t181599w                      =                      tufinlwgt.x                      *                      t181599
  76.                       )                    
  77.                   
  78.                       #Pace 5: Create reduced file of merely weighted data                    
  79. atus18vol                      <-                      atus18vol                      %>%                    
  80.                       select(tucaseid,                    
  81.                       t150101w,
  82.                       t150102w,
  83.                       t150103w,
  84.                       t150104w,
  85.                       t150105w,
  86.                       t150106w,
  87.                       t150199w,
  88.                       t150201w,
  89.                       t150202w,
  90.                       t150203w,
  91.                       t150204w,
  92.                       t150299w,
  93.                       t150301w,
  94.                       t150302w,
  95.                       t150399w,
  96.                       t150401w,
  97.                       t150402w,
  98.                       t150499w,
  99.                       t150501w,
  100.                       t150599w,
  101.                       t150601w,
  102.                       t150602w,
  103.                       t150699w,
  104.                       t150701w,
  105.                       t150799w,
  106.                       #t150801w, (note: commented out because non bachelor in 2017 ATUS)                    
  107.                       #t150899w, (notation: commented out because not bachelor in 2017 ATUS)                    
  108.                       t159999w,
  109.                       t181501w,
  110.                       t181599w,
  111.                       tufinlwgt.x                      )                    
  112.                   
  113.                   
  114.                   
  115.                       #Step 6: Create categorical groupings, number of volunteer hours                    
  116. atus18vol                      <-                      atus18vol                      %>%                    
  117.                       mutate(                    
  118.                       adminsupport                      =                      t150101w                      +                      t150102w                      +                      t150103w                      +                      t150104w                      +                      t150105w                      +                      t150106w                      +t150199w,
  119.                       socialservice                      =                      t150201w                      +                      t150202w                      +                      t150203w                      +                      t150204w                      +                      t150299w,
  120.                       maintenance                      =                      t150301w                      +                      t150302w+                      t150399w,
  121.                       performculture                      =                      t150401w                      +                      t150402w                      +                      t150499w,
  122.                       attendmeet                      =                      t150501w                      +                      t150599w,
  123.                       pubhealth                      =                      t150601w                      +                      t150602w                      +                      t150699w,
  124.                       waiting                      =                      t150701w                      +                      t150799w,
  125.                       #security = t150801w,                    
  126.                       travel                      =                      t181501w                      +                      t181599w,
  127.                       othervol                      =                      t159999w
  128.                       )                    
  129.                   
  130.                       #Step 7: Calculate proprotion of weighted individuals involved in each category                    
  131.                   
  132.                       #Step 7a: Authoritative/Back up                    
  133. atus18vol$adminsupportprop                      <-                      ifelse                      (                      (atus18vol$t150101w                      +                    
  134.                       atus18vol$t150102w                      +                    
  135.                       atus18vol$t150103w                      +                    
  136.                       atus18vol$t150104w                      +                    
  137.                       atus18vol$t150105w                      +                    
  138.                       atus18vol$t150106w                      +                    
  139.                       atus18vol$t150199w)                      >                      0,                    
  140.                       atus18vol$tufinlwgt.x,                    
  141.                       0                      )                    
  142.                   
  143.                       #Stride 7b: Social service                    
  144. atus18vol$socialserviceprop                      <-                      ifelse                      (                      (atus18vol$t150201w                      +                    
  145.                       atus18vol$t150202w                      +                    
  146.                       atus18vol$t150203w                      +                    
  147.                       atus18vol$t150204w                      +                    
  148.                       atus18vol$t150299w)                      >                      0,                    
  149.                       atus18vol$tufinlwgt.x,                    
  150.                       0                      )                    
  151.                   
  152.                       #Step 7c: Maintenance                    
  153. atus18vol$maintenanceprop                      <-                      ifelse                      (                      (atus18vol$t150301w                      +                    
  154.                       atus18vol$t150302w                      +                    
  155.                       atus18vol$t150399w)                      >                      0,                    
  156.                       atus18vol$tufinlwgt.x,                    
  157.                       0                      )                    
  158.                   
  159.                       #Step 7d: Perform culture                    
  160. atus18vol$performcultureprop                      <-                      ifelse                      (                      (atus18vol$t150401w                      +                    
  161.                       atus18vol$t150402w                      +                    
  162.                       atus18vol$t150499w)                      >                      0,                    
  163.                       atus18vol$tufinlwgt.x,                    
  164.                       0                      )                    
  165.                   
  166.                       #Step 7e: Attend meetings                    
  167. atus18vol$attendmeetprop                      <-                      ifelse                      (                      (atus18vol$t150501w+                    
  168.                       atus18vol$t150599w)                      >                      0,                    
  169.                       atus18vol$tufinlwgt.x,                    
  170.                       0                      )                    
  171.                   
  172.                       #Step 7f: Public health                    
  173. atus18vol$pubhealthprop                      <-                      ifelse                      (                      (atus18vol$t150601w                      +                    
  174.                       atus18vol$t150602w                      +                    
  175.                       atus18vol$t150699w)                      >                      0,                    
  176.                       atus18vol$tufinlwgt.10,                    
  177.                       0                      )                    
  178.                   
  179.                       #Stride 7g: Waiting                    
  180. atus18vol$waitingprop                      <-                      ifelse                      (                      (atus18vol$t150701w                      +                    
  181.                       atus18vol$t150799w)                      >                      0,                    
  182.                       atus18vol$tufinlwgt.x,                    
  183.                       0                      )                    
  184.                   
  185.                       #Step 7h: Security                    
  186.                       #atus18vol$securityprop <- ifelse((atus18vol$t150801w) >0,                                          
  187.                       #atus18vol$tufinlwgt.x,                                          
  188.                       #0)                    
  189.                   
  190.                       #Step 7i: Travel                    
  191. atus18vol$travelprop                      <-                      ifelse                      (                      (atus18vol$t181501w                      +                    
  192.                       atus18vol$t181599w)                      >                      0,                    
  193.                       atus18vol$tufinlwgt.10,                    
  194.                       0                      )                    
  195.                   
  196.                       #Step 7j: Other                    
  197. atus18vol$othervolprop                      <-                      ifelse                      (                      (atus18vol$t159999w)                      >                      0,                    
  198.                       atus18vol$tufinlwgt.x,                    
  199.                       0                      )                    
  200.                   
  201.                       #Step 8: Summarize number of hours/volunteers in each category                    
  202. atus18volsum<-                      atus18vol                      %>%                    
  203.                       summarise(                    
  204.                       adminsupportprop                      =                      sum                      (adminsupportprop),
  205.                       socialserviceprop                      =                      sum                      (socialserviceprop),
  206.                       maintenanceprop                      =                      sum                      (maintenanceprop),
  207.                       performcultureprop                      =                      sum                      (performcultureprop),
  208.                       attendmeetprop                      =                      sum                      (attendmeetprop),
  209.                       pubhealthprop                      =                      sum                      (pubhealthprop),
  210.                       waitingprop                      =                      sum                      (waitingprop),
  211.                       #securityprop = sum(securityprop),                    
  212.                       travelprop                      =                      sum                      (travelprop),
  213.                       othervolprop                      =                      sum                      (othervolprop),
  214.                       adminsupport                      =                      sum                      (adminsupport),
  215.                       socialservice                      =                      sum                      (socialservice),
  216.                       maintenance=                      sum                      (maintenance),
  217.                       performculture                      =                      sum                      (performculture),
  218.                       attendmeet                      =                      sum                      (attendmeet),
  219.                       pubhealth                      =                      sum                      (pubhealth),
  220.                       waiting                      =                      sum                      (waiting),
  221.                       #security = sum(security),                    
  222.                       travel                      =                      sum                      (travel),
  223.                       othervol                      =                      sum                      (othervol)                    
  224.                       )                    
  225.                   
  226.                       #Step 9: Reduce to number of volunteer hours                    
  227. atus18volhours<-                      atus18volsum                      %>%                    
  228.                       select(adminsupport, socialservice, maintenance,  performculture, attendmeet, pubhealth, waiting,                    
  229.                       #security,                                          
  230.                       travel, othervol)                      %>%                    
  231.                       assemble(adminsupport, socialservice, maintenance,  performculture, attendmeet, pubhealth, waiting,                    
  232.                       #security,                                          
  233.                       travel, othervol,
  234.                       key                      =                      "blazon",
  235.                       value                      =                      "hours"                      )                    
  236.                   
  237.                   
  238.                       #Step 10: rename columns                    
  239. atus18volhours$blazon[                      grepl                      (                      "adminsupport",atus18volhours$type                      )                      ]                      <-                      "Administrative and back up"                    
  240. atus18volhours$blazon[                      grepl                      (                      "socialservice",atus18volhours$type                      )                      ]                      <-                      "Social service and care"                    
  241. atus18volhours$type[                      grepl                      (                      "maintenance",atus18volhours$type                      )                      ]                      <-                      "Maintenance, building, and cleanup"                    
  242. atus18volhours$type[                      grepl                      (                      "performculture",atus18volhours$type                      )                      ]                      <-                      "Performing and cultural activities"                    
  243. atus18volhours$type[                      grepl                      (                      "attendmeet",atus18volhours$blazon                      )                      ]                      <-                      "Meetings, conferences, and grooming"                    
  244. atus18volhours$type[                      grepl                      (                      "pubhealth",atus18volhours$type                      )                      ]                      <-                      "Public health and safety"                    
  245. atus18volhours$blazon[                      grepl                      (                      "waiting",atus18volhours$type                      )                      ]                      <-                      "Waiting"                    
  246.                       #atus18volhours$blazon[grepl("security",atus18volhours$type )] <- "Security procedures"                    
  247. atus18volhours$blazon[                      grepl                      (                      "travel",atus18volhours$type                      )                      ]                      <-                      "Travel"                    
  248. atus18volhours$type[                      grepl                      (                      "othervol",atus18volhours$type                      )                      ]                      <-                      "Other"                    
  249. atus18volhours$blazon[                      grepl                      (                      "adminsupport",atus18volhours$type                      )                      ]                      <-                      "Authoritative and support"                    
  250.                   
  251.                       #Step 11: Calculate total                    
  252. atus18volhours[                      ten,2                      ]                      <-                      sum                      (atus18volhours$hours)                    
  253. atus18volhours$type[                      ten                      ]                      =                      "Total"                    
  254.                   
  255.                       #Step 12: Calculate proportional number of hours per category                    
  256. atus18volhours                      <-atus18volhours                      %>%                    
  257.                       mutate(                    
  258.                       AsPct                      =                      circular                      (                      (                      (hours/hours[                      10                      ]                      )                      *                      100                      ),i                      )                    
  259.                       )                    
  260.                   
  261.                       #Step 12: Remane final underlying table and write to CSV                    
  262. Figure4                      <-                      atus18volhours
  263.                       write.csv                                            (Figure4,                      "Figures/NSiB_Figure4_Table.csv"                      )                    
  1.                       #Read in Table 6 raw data                    
  2.                       #Based on United states of america Department of Labor, Bureau of Labor Statistics, Current Population Survey, Volunteer Supplement (2007-2015) (https://www.bls.gov/cps/dwelling.htm),                    
  3.                       #US Department of Labor, Agency of Labor Statistics, American Time Use Survey (2008-2017) (https://world wide web.bls.gov/tus/home.htm),                                          
  4.                       #US Department of Labor, Agency of Labor Statistics, Current Employment Statistics (2017) (https://world wide web.bls.gov/ces/), and                    
  5.                       #US Census Bureau "Almanac Estimates of the Resident Population past Sex, Age, Race, and Hispanic Origin for the United States and States: April i,2010 to July 1, 2017", (https://factfinder.census.gov/)                    
  6.                   
  7.                       #Read in raw data, and write to CSV                    
  8. Table6                      <-                      read_csv(                      "External_Data/Volunteering Data.csv"                      )                    
  9.                       write.csv                                            (Table6,                      "Tables/NSiB_Table6.csv"                      )                    

Volunteering is an of import component of the nonprofit sector: over two-fifths of public charities rely on volunteers. 5 In previous nonprofit sector briefs, volunteering estimates were based on data from the Electric current Population Survey (CPS). Volunteer statistics from the CPS Volunteer Supplement are not available after September 2015: electric current figures shown here for total hours volunteered and total number of volunteers are based on previous estimates. For ongoing volunteering information updates, please visit https://www.nationalservice.gov/serve/via 6

Number of Volunteers

An estimated 64.iv one thousand thousand adults, 25.1 percentage of the population volunteered at least once in 2017. The highest volunteer rate reported in the decade spanning from 2008 to 2017 was 26.8 percentage, which was reported in 2009 and 2011. The lowest volunteer rate was reported in 2015: 24.ix percentage.

The percentage of the population volunteering on a given day increased slightly in 2017, rising to vi percent from five.6 percentage in 2016. This rise occurs after 2016 saw the lowest proportion of the population volunteering on an average 24-hour interval inside the previous ten years: however, the 15.6 people volunteering on a given 24-hour interval represents an increase of over 1 meg daily volunteers from 2016. In the past decade, the highest proportion of Americans volunteering on a given 24-hour interval was in 2009, when 7.1 percentage of the population volunteered (17.1 people).

Hours Volunteered

Americans volunteered an estimated 64.iv hours in 2017, a slight increment from 63.ix hours in 2016. This amounts to nearly viii.8 hours per volunteer, slightly more than in 2016.

Volunteer Activities

Effigy 4 provides more information on how volunteers spent their time in 2018. The largest use of volunteer hours in 2018 was on social service and care activities (22 percent). These activities include such tasks equally preparing nutrient, collecting and delivering clothing or other goods, providing intendance, and teaching, counseling, or mentoring. Authoritative and support activities made upwards the next-largest proportion of volunteer fourth dimension (24.viii percent); this category includes things like computer use, telephone calls (except hotline counseling), writing, fundraising, and the similar. These ii categories of activities also led volunteer hours in 2017, although the proportion of time spent in social service and care activities has decreased slightly (from 24.8 percent) while the proportion of time spent in social administrative and support activities increased slightly (from 22 percent). Volunteers spent a larger proportion of their fourth dimension in performing or cultural activities and meetings, conferenecs, and trainings in 2018 than in 2017, while they spent less time in maintenance, building, and cleanup activities.

FIGURE 4

Distribution of Volunteer Fourth dimension by Acitivty, 2018 (percent)

  1.                       #Brandish Figure 4                    
  2. Fig4Plot                      <-                      part                      (Fig4Table)                      {                    
  3.                   
  4.                       Fig4<-                      Fig4Table                      %>%                    
  5.                       filter                      (type                      !=                      "Full"                      )                      %>%                    
  6.                       #filter(blazon != "Security procedures") %>% #Filtered out considering equals 0%                    
  7.                       ggplot(aes(ten=                      reorder                      (type,                      -AsPct), y                      =AsPct)                      )                      +                    
  8.                       geom_bar(stat                      =                      "identity"                      )                      +                    
  9.                       geom_text(aes(label=                      formatC                      (                      round                      (AsPct,one                      ),                      format                      =                      'f', digits                      =                      ane                      )                      ),
  10.                       position=                      position_dodge(width=                      1                      ),                    
  11.                       vjust                      =-.3,
  12.                       size=                      3                      )                      +                    
  13.                       scale_y_continuous(aggrandize                      =                      c                      (                      0,                      0                      ), limits                      =                      c                      (                      0,30                      )                      )                      +                    
  14.                       labs(y                      =                      "Percentage of total volunteer fourth dimension"                      )                      +                    
  15.                       theme(centrality.title                      =                      element_blank(                      ),
  16.                       panel.filigree.major                      =                      element_blank(                      ),
  17.                       centrality.text.y                      =                      element_blank(                      )                      )                      +                    
  18.                       scale_x_discrete(                      labels                      =                      function                      (blazon)                      str_wrap(blazon, width=                      10                      )                      )                    
  19.                   
  20.                       UrbCaption                      <-                      grobTree(                    
  21.                       gp                      =                      gpar(fontsize                      =                      8, hjust                      =                      1                      ),                    
  22.                       textGrob(label                      =                      "I Northward Southward T I T U T E",                    
  23.                       proper noun                      =                      "caption1",
  24.                       x                      =                      unit of measurement(                      1,                      "npc"                      ),                    
  25.                       y                      =                      unit(                      0,                      "npc"                      ),
  26.                       hjust                      =                      1,                    
  27.                       vjust                      =                      0                      ),
  28.                       textGrob(characterization                      =                      "U R B A N  ",                    
  29.                       ten                      =                      unit(                      1,                      "npc"                      )                      -                      grobWidth(                      "caption1"                      )                      -                      unit(                      0.01,                      "lines"                      ),                    
  30.                       y                      =                      unit(                      0,                      "npc"                      ),                    
  31.                       hjust                      =                      one,                    
  32.                       vjust                      =                      0,                    
  33.                       gp                      =                      gpar(                      col                      =                      "#1696d2"                      )                      )                      )                    
  34.                   
  35.                       grid.arrange                      (Fig4, UrbCaption,                      ncol                      =                      1, heights                      =                      c                      (                      xxx,                      1                      )                      )                    
  36.                       }                    
  37.                   
  38. Fig4Plot(Figure4)                    

Source: Author'due south calculations based on US Department of Labor, Bureau of Labor Statistics, American Time Employ Survey 2018.

Value of Volunteering

The time volunteers spent in 2017 was worth an estimated 256 (table 6). The value of volunteer fourth dimension combined with private giving deemed for over half a trillion dollars ($435.31 billion); volunteer time represents 12.9 pct of that full.

Tabular array 6

Number, Hours, and Dollar Value of Volunteers, 2008-2017

  1.                       #Display Tabular array 6                    
  2. kable(Table6,                    
  3.                       "html",                    
  4.                       format.args                      =                      list                      (decimal.mark                      =                      '.', big.mark                      =                      ","                      ),
  5.                       align                      =                      "lcccccccccc",
  6.                       col.names                      =                      c                      (                      "",                      "2008",                      "2009",                      "2010",                      "2011",                      "2012",                      "2013",                      "2014",                      "2015",                      "2016",                      "2017"                      )                      )                      %>%                    
  7.                       kable_styling(                      "hover", full_width                      =                      F                      )                      %>%                    
  8.                       row_spec(                      c                      (                      ane,7,11                      ), assuming                      =                      T, hline_after                      =                      T                      )                    
2008 2009 2010 2011 2012 2013 2014 2015 2016 2017
Per year
Percent of population volunteering 26.iv 26.eight 26.3 26.8 26.5 25.4 25.three 24.nine 25.2 25.1
Number of volunteers (millions) 61.8 63.4 62.8 64.3 64.5 62.six 62.8 62.6 63.nine 64.4
Hours volunteered (billions) 8 8.one 8.1 8.5 8.five 8.three 8.vii 8.5 8.7 8.8
Average hours per volunteer 130 128 129 132 132 133 139 136 136 137
Median hours per volunteer 52 52 52 51 50 fifty l 52 -- --
Per average day
Percent of population volunteering 6.8 vii.one 6.viii 6 v.eight 6.1 6.four 6.iv 5.half-dozen 6
Number of volunteers (millions) 16.ii 17.1 xvi.6 14.6 14.3 15.1 16 xvi.three 14.4 15.6
Hours per day per volunteer 2.43 ii.39 2.46 2.84 2.48 2.57 2.41 two.49 two.39 2.86
Value of volunteers
Population age 16 and over (millions) 234.4 236.3 238.3 240 243.8 246.2 248.4 251.3 253.6 256
Full-time-equivalent employees (millions) four.seven 4.viii 4.8 5 5 4.9 five.i five 5.1 5.two
Assigned hourly wages for volunteers $18.08 $18.63 $nineteen.07 $19.47 $xix.75 $20.16 $20.59 $21.08 $21.63 $22.13
Assigned value of volunteer time ($ billions) $144.70 $150.seventy $154.10 $164.80 $168.30 $167.20 $179.20 $179.00 $187.40 $195.00

Sources: Author's calculations based on data from United states Department of Labor, Bureau of Labor Statistics, Current Population Survey, Volunteer Supplement (2007–16); US Department of Labor, Bureau of Labor Statistics, American Time Use Survey (2007–16); and U.s.a. Section of Labor, Bureau of Labor Statistics, Current Employment Statistics (2016).

Notes: Median hours per volunteer not bachelor for 2016 – 17. Percent of population volunteering and hours volunteered for 2016 – 17 estimated based on previous years.

Back to superlative

Conclusion

Overall, in 2018, the nonprofit sector remained relatively salubrious with continuous financial growth and increases in the number of nonprofits throughout various subsectors. However, new data in charitable giving trends point to nuances worthof further exploration. Public charities composed over 2-thirds of all registered nonprofit organizations and deemed for over 3-quarters of the revenue andexpenses of the nonprofit sector in the United states. From 2011 to 2016, the number of nonprofit organizations registered with the IRS rose by four.five percent. Nonprofit revenues grew 1.viii percent; assets increased ii.3 percent; and expenses grew past 3.vi per centum.

While the nonprofit sector as a whole continues to see steady financial growth (with revenue, expenses, and assets all standing to grow)," U.S. giving data points to new nuances in charitable giving worth disentangling. While annual levels of giving remained relatively steady since the Great Recession, pointing to an overall increment of 0.7 percentage in giving between 2017 and 2018, after adjusting for inflation, individual charitable giving shows a down trend in full charitable giving. Disentangling this dash will aid better inform the overall state of nonprofit sector in the Usa.


References

Foundation Center. 2018. Foundation Stats (2014). New York: Foundation Center. http://data.foundationcenter.org/#/foundations/all/nationwide/full/list/2014

Giving United states of america Foundation. 2018. Giving USA 2018: The Almanac Report on Philanthropy for the Twelvemonth 2017. Bloomington, IN: Giving United states of america Foundation.

Acknowledgments

*This cursory was funded by the Urban Institute. The views expressed are those of the author and should non exist attributed to the Urban Plant, its trustees, or its funders. Funders exercise non make up one's mind research findings or the insights and recommendations of Urban experts. Further information on the Urban Institute's funding principles is available at urban.org/fundingprinciples. *

Notes

Dorsum to pinnacle