{"id":22879290,"url":"https://github.com/utdata/rwd-r-leso","last_synced_at":"2026-01-08T09:04:56.266Z","repository":{"id":65841168,"uuid":"309006104","full_name":"utdata/rwd-r-leso","owner":"utdata","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-06T12:25:16.000Z","size":82767,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T20:44:24.243Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://utdata.github.io/rwd-r-leso/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/utdata.png","metadata":{"files":{"readme":"README.html","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-01T02:00:46.000Z","updated_at":"2025-01-06T12:25:21.000Z","dependencies_parsed_at":"2024-12-13T16:45:46.040Z","dependency_job_id":"be48f0c4-9958-40a0-a3f9-dac0f8a9c2f7","html_url":"https://github.com/utdata/rwd-r-leso","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utdata%2Frwd-r-leso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utdata%2Frwd-r-leso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utdata%2Frwd-r-leso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utdata%2Frwd-r-leso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/utdata","download_url":"https://codeload.github.com/utdata/rwd-r-leso/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246483554,"owners_count":20784912,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-13T16:38:43.270Z","updated_at":"2026-01-08T09:04:56.203Z","avatar_url":"https://github.com/utdata.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n\u003chtml xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\"\u003e\u003chead\u003e\n\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cmeta name=\"generator\" content=\"quarto-1.3.353\"\u003e\n\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\"\u003e\n\n\n\u003ctitle\u003ereadme\u003c/title\u003e\n\u003cstyle\u003e\ncode{white-space: pre-wrap;}\nspan.smallcaps{font-variant: small-caps;}\ndiv.columns{display: flex; gap: min(4vw, 1.5em);}\ndiv.column{flex: auto; overflow-x: auto;}\ndiv.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\nul.task-list{list-style: none;}\nul.task-list li input[type=\"checkbox\"] {\n  width: 0.8em;\n  margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ \n  vertical-align: middle;\n}\n/* CSS for syntax highlighting */\npre \u003e code.sourceCode { white-space: pre; position: relative; }\npre \u003e code.sourceCode \u003e span { display: inline-block; line-height: 1.25; }\npre \u003e code.sourceCode \u003e span:empty { height: 1.2em; }\n.sourceCode { overflow: visible; }\ncode.sourceCode \u003e span { color: inherit; text-decoration: inherit; }\ndiv.sourceCode { margin: 1em 0; }\npre.sourceCode { margin: 0; }\n@media screen {\ndiv.sourceCode { overflow: auto; }\n}\n@media print {\npre \u003e code.sourceCode { white-space: pre-wrap; }\npre \u003e code.sourceCode \u003e span { text-indent: -5em; padding-left: 5em; }\n}\npre.numberSource code\n  { counter-reset: source-line 0; }\npre.numberSource code \u003e span\n  { position: relative; left: -4em; counter-increment: source-line; }\npre.numberSource code \u003e span \u003e a:first-child::before\n  { content: counter(source-line);\n    position: relative; left: -1em; text-align: right; vertical-align: baseline;\n    border: none; display: inline-block;\n    -webkit-touch-callout: none; -webkit-user-select: none;\n    -khtml-user-select: none; -moz-user-select: none;\n    -ms-user-select: none; user-select: none;\n    padding: 0 4px; width: 4em;\n  }\npre.numberSource { margin-left: 3em;  padding-left: 4px; }\ndiv.sourceCode\n  {   }\n@media screen {\npre \u003e code.sourceCode \u003e span \u003e a:first-child::before { text-decoration: underline; }\n}\n\u003c/style\u003e\n\n\n\u003cscript src=\"README_files/libs/clipboard/clipboard.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"README_files/libs/quarto-html/quarto.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"README_files/libs/quarto-html/popper.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"README_files/libs/quarto-html/tippy.umd.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"README_files/libs/quarto-html/anchor.min.js\"\u003e\u003c/script\u003e\n\u003clink href=\"README_files/libs/quarto-html/tippy.css\" rel=\"stylesheet\"\u003e\n\u003clink href=\"README_files/libs/quarto-html/quarto-syntax-highlighting.css\" rel=\"stylesheet\" id=\"quarto-text-highlighting-styles\"\u003e\n\u003cscript src=\"README_files/libs/bootstrap/bootstrap.min.js\"\u003e\u003c/script\u003e\n\u003clink href=\"README_files/libs/bootstrap/bootstrap-icons.css\" rel=\"stylesheet\"\u003e\n\u003clink href=\"README_files/libs/bootstrap/bootstrap.min.css\" rel=\"stylesheet\" id=\"quarto-bootstrap\" data-mode=\"light\"\u003e\n\n\n\u003c/head\u003e\n\n\u003cbody class=\"fullcontent\"\u003e\n\n\u003cdiv id=\"quarto-content\" class=\"page-columns page-rows-contents page-layout-article\"\u003e\n\n\u003cmain class=\"content\" id=\"quarto-document-content\"\u003e\n\n\n\n\u003csection id=\"defence-logistics-agencys-leso-program\" class=\"level1\"\u003e\n\u003ch1\u003eDefence Logistics Agency’s LESO program\u003c/h1\u003e\n\u003cp\u003eThe Defense Logistics Agency handles transfers of military surplus equipment to local law enforcement through the Law Enforcement Support Office (LESO) or \u003ca href=\"https://www.dla.mil/DispositionServices/Offers/Reutilization/LawEnforcement/\"\u003eLESO Program\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe data is updated quarterly and available for download on their \u003ca href=\"https://www.dla.mil/DispositionServices/Offers/Reutilization/LawEnforcement/PublicInformation/\"\u003eLESO Public Information page\u003c/a\u003e.\u003c/p\u003e\n\u003csection id=\"research-about-the-data\" class=\"level2\"\u003e\n\u003ch2 class=\"anchored\" data-anchor-id=\"research-about-the-data\"\u003eResearch about the data\u003c/h2\u003e\n\u003csection id=\"shipment-values\" class=\"level3\"\u003e\n\u003ch3 class=\"anchored\" data-anchor-id=\"shipment-values\"\u003eShipment values\u003c/h3\u003e\n\u003cp\u003eIn 2020 I asked the LESO office about the \u003ccode\u003eacquisition_value\u003c/code\u003e measure and found that it should be \u003cem\u003emultiplied\u003c/em\u003e by the \u003ccode\u003equantity\u003c/code\u003e. The value is for single item.\u003c/p\u003e\n\u003cp\u003eIn addition, I asked about why there are different prices for the same item, and received the following response on 2020-12-14:\u003c/p\u003e\n\u003cblockquote class=\"blockquote\"\u003e\n\u003cp\u003eYou are correct, the NSN is the National Stock Number. The primary reason a similar item has a different NSN designation is classification difference. In some cases, this could be difference in features, a frequently added component to the item, or variance in storage requirements such as the recent vaccinees that are being assigned NSNs for DLA’s major subordinate command, Troop Support.The cost information is provided by the customer when they turn the items into DLA Disposition Services. Acquisition values can vary for numerous reasons. One is the above, variance in classification differences such as modifications. As with most commodities, other factors could include variance in acquisition cost depending on the quantity procured and the year acquired.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/section\u003e\n\u003csection id=\"controlled-vs-non-controlled\" class=\"level3\"\u003e\n\u003ch3 class=\"anchored\" data-anchor-id=\"controlled-vs-non-controlled\"\u003eControlled vs non-controlled\u003c/h3\u003e\n\u003cp\u003eThe most recent year includes “non-controlled” items like blankets and boots, which are removed after a year. This inflates counts for the most recent year of data. During research in June 2022, I learned a number of things about this.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003enon-controlled items are classified with a DEMIL CODE of “A” or the combination of DEMIL CODE “Q” and DEMIL IC of “6”.\u003c/li\u003e\n\u003cli\u003eSome non-controlled items, like aircraft or items of high value, remain on the property list.\u003c/li\u003e\n\u003cli\u003eThere are also errors in the coding the item “RECON SCOUT XT,SPEC”. That will need to be fixed in 22Q2 data, but the DLA said it will be fixed in the future.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHere is my correspondence:\u003c/p\u003e\n\u003cp\u003eQuestion: Is there a way to tell from the data itself if the item is a controlled vs non-controlled item? I thought perhaps the DEMIL IC field with value of “A” might be non-controlled, but there seem to be items older than a year with that categorization that could be controlled and accurately remain, like RECON SCOUT XT,SPEC and AIRPLANE,CARGO-TRANSPORT.\u003c/p\u003e\n\u003cblockquote class=\"blockquote\"\u003e\n\u003cp\u003eProperty with the DEMIL codes A and Q6 are considered non-controlled general property and fall off the LESO property books after one year. All other Demil codes are considered controlled items and stay on the LESO property book until returned to DLA for disposition/disposal.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eFollowup question: When you say Q6, do you mean a demil_code of “Q” combined with demil_ic of “6”. Would other property with demil_code “Q” but with a demil_ic of other numbers not be controlled? Second question: In the 22Q2 data, there are a number of items older than a year (n = 62) that are DEMIL CODE A and DEMIL IC 1 and they do seem like big items that might be “controlled”. Some examples: RECON SCOUT XT,SPEC (ALABAMA LAW ENFORCEMENT AGENCY, 2016-08-25) and AIRPLANE,CARGO-TRANSPORT (ARIZONA DEPT OF PUBLIC SAFETY, 2015-12-03, $17,000,000). I could see the argument for them to be controlled (though SEAT,AIRCRAFT might be a maybe on that).\u003c/p\u003e\n\u003cblockquote class=\"blockquote\"\u003e\n\u003cp\u003eThe general rule is that property coded A and Q6 (6 being the integrity code) falls off the LESO property book after one year. However, there are some exceptions. For instance, aircraft are always controlled regardless of the demil code. Also, LESO has the discretion to keep items as controlled despite the demil code. This happens with some high value items. The RECON SCOUT XT, SPEC example you cited was actually initially coded incorrectly because the wrong NSN was used when it was coded as A. Once the correct NSN was verified with the manufacturer, is was renamed and recoded as D. The next quarterly report will reflect the new name and code.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eFollowup: Any chance there is a standard minimum value that represents “high value items” that you keep on the property book?\u003c/p\u003e\n\u003cblockquote class=\"blockquote\"\u003e\n\u003cp\u003eNo, there isn’t a standard minimum value. It also may also depend on the type of property.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/section\u003e\n\u003c/section\u003e\n\u003csection id=\"related-data\" class=\"level2\"\u003e\n\u003ch2 class=\"anchored\" data-anchor-id=\"related-data\"\u003eRelated data\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTwo values are considered \u003ca href=\"https://www.dla.mil/HQ/LogisticsOperations/Services/FIC/DEMILCoding/DEMILCodes/\"\u003eDemil Codes\u003c/a\u003e which note how an item must be tracked or destroyed?\u003c/li\u003e\n\u003cli\u003eThere is also the \u003ccode\u003eNSN\u003c/code\u003e value, or \u003ca href=\"https://www.dla.mil/AboutDLA/News/NewsArticleView/Article/1933320/what-is-a-national-stock-number/\"\u003eNational Stock Number\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eI downloaded a \u003ca href=\"https://catalog.data.gov/dataset/national-stock-number-extract\"\u003eversion of NSN\u003c/a\u003e in June 2022, saved as \u003ccode\u003edata-raw/nsn-extract-3-17-21.xlsx\u003c/code\u003e. It doesn’t have many matches.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.dla.mil/AboutDLA/News/NewsArticleView/Article/1675036/dla-uses-national-stock-numbers-to-manage-supplies-efficiently-throughout-their/\"\u003eBreaks down\u003c/a\u003e NSN values.\u003c/li\u003e\n\u003c/ul\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/section\u003e\n\u003csection id=\"local-agencies.\" class=\"level2\"\u003e\n\u003ch2 class=\"anchored\" data-anchor-id=\"local-agencies.\"\u003eLocal agencies.\u003c/h2\u003e\n\u003cp\u003eThe list as of 22Q2. List worked out in analysis notebook. See notes there. \u003ccode\u003e#NC\u003c/code\u003e is not confirmed.\u003c/p\u003e\n\u003cdiv class=\"sourceCode\" id=\"cb1\"\u003e\u003cpre class=\"sourceCode r code-with-copy\"\u003e\u003ccode class=\"sourceCode r\"\u003e\u003cspan id=\"cb1-1\"\u003e\u003ca href=\"#cb1-1\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003eaus_msa_list \u003cspan class=\"ot\"\u003e\u0026lt;-\u003c/span\u003e \u003cspan class=\"fu\"\u003ec\u003c/span\u003e(\u003c/span\u003e\n\u003cspan id=\"cb1-2\"\u003e\u003ca href=\"#cb1-2\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"AUSTIN PARKS POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-3\"\u003e\u003ca href=\"#cb1-3\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"AUSTIN POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-4\"\u003e\u003ca href=\"#cb1-4\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"BASTROP COUNTY SHERIFF'S OFFICE\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-5\"\u003e\u003ca href=\"#cb1-5\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"BASTROP POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-6\"\u003e\u003ca href=\"#cb1-6\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"BEE CAVE POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-7\"\u003e\u003ca href=\"#cb1-7\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"BUDA POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-8\"\u003e\u003ca href=\"#cb1-8\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"CALDWELL COUNTY SHERIFFS OFFICE\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-9\"\u003e\u003ca href=\"#cb1-9\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"CEDAR PARK POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-10\"\u003e\u003ca href=\"#cb1-10\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"ELGIN POLICE DEPARTMENT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-11\"\u003e\u003ca href=\"#cb1-11\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"FLORENCE POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-12\"\u003e\u003ca href=\"#cb1-12\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"GEORGETOWN POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-13\"\u003e\u003ca href=\"#cb1-13\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"GRANGER POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-14\"\u003e\u003ca href=\"#cb1-14\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"HAYS CO CONSTABLE PRECINCT 4\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-15\"\u003e\u003ca href=\"#cb1-15\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"HAYS COUNTY SHERIFFS OFFICE\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-16\"\u003e\u003ca href=\"#cb1-16\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"HUTTO POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-17\"\u003e\u003ca href=\"#cb1-17\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"JARRELL POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-18\"\u003e\u003ca href=\"#cb1-18\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"JONESTOWN POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-19\"\u003e\u003ca href=\"#cb1-19\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"KYLE POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-20\"\u003e\u003ca href=\"#cb1-20\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"LAGO VISTA POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-21\"\u003e\u003ca href=\"#cb1-21\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"LAKEWAY POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-22\"\u003e\u003ca href=\"#cb1-22\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"LEANDER POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-23\"\u003e\u003ca href=\"#cb1-23\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"LIBERTY HILL POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-24\"\u003e\u003ca href=\"#cb1-24\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"LOCKHART POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-25\"\u003e\u003ca href=\"#cb1-25\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"LULING POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-26\"\u003e\u003ca href=\"#cb1-26\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"MANOR POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-27\"\u003e\u003ca href=\"#cb1-27\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"MARTINDALE POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-28\"\u003e\u003ca href=\"#cb1-28\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"PFLUGERVILLE POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-29\"\u003e\u003ca href=\"#cb1-29\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"ROLLINGWOOD POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-30\"\u003e\u003ca href=\"#cb1-30\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"SAN MARCOS POLICE DEPT\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-31\"\u003e\u003ca href=\"#cb1-31\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"SMITHVILLE POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-32\"\u003e\u003ca href=\"#cb1-32\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"SUNSET VALLEY POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-33\"\u003e\u003ca href=\"#cb1-33\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"TAYLOR POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-34\"\u003e\u003ca href=\"#cb1-34\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"THRALL POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-35\"\u003e\u003ca href=\"#cb1-35\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"co\"\u003e# TEXAS STATE UNIVERSITY HI_ED\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-36\"\u003e\u003ca href=\"#cb1-36\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"TRAVIS COUNTY SHERIFFS OFFICE\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-37\"\u003e\u003ca href=\"#cb1-37\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"co\"\u003e# TRAVIS CONSTABLE OFFICE,\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-38\"\u003e\u003ca href=\"#cb1-38\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"co\"\u003e# SOUTHWESTERN UNIVERSITY HI_ID\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-39\"\u003e\u003ca href=\"#cb1-39\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"WESTLAKE HILLS POLICE DEPT\"\u003c/span\u003e, \u003cspan class=\"co\"\u003e#NC\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-40\"\u003e\u003ca href=\"#cb1-40\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"UNIV OF TEXAS SYSTEM POLICE HI_ED\"\u003c/span\u003e,\u003c/span\u003e\n\u003cspan id=\"cb1-41\"\u003e\u003ca href=\"#cb1-41\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e  \u003cspan class=\"st\"\u003e\"WILLIAMSON COUNTY SHERIFF'S OFFICE\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan id=\"cb1-42\"\u003e\u003ca href=\"#cb1-42\" aria-hidden=\"true\" tabindex=\"-1\"\u003e\u003c/a\u003e)\u003c/span\u003e\u003c/code\u003e\u003cbutton title=\"Copy to Clipboard\" class=\"code-copy-button\"\u003e\u003ci class=\"bi\"\u003e\u003c/i\u003e\u003c/button\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/section\u003e\n\u003csection id=\"notebooks\" class=\"level2\"\u003e\n\u003ch2 class=\"anchored\" data-anchor-id=\"notebooks\"\u003eNotebooks\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"01-cleaning.qmd\"\u003eimport-clean\u003c/a\u003e which loops through sheets in an Excel file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/section\u003e\n\u003c/section\u003e\n\n\u003c/main\u003e\n\u003c!-- /main column --\u003e\n\u003cscript id=\"quarto-html-after-body\" type=\"application/javascript\"\u003e\nwindow.document.addEventListener(\"DOMContentLoaded\", function (event) {\n  const toggleBodyColorMode = (bsSheetEl) =\u003e {\n    const mode = bsSheetEl.getAttribute(\"data-mode\");\n    const bodyEl = window.document.querySelector(\"body\");\n    if (mode === \"dark\") {\n      bodyEl.classList.add(\"quarto-dark\");\n      bodyEl.classList.remove(\"quarto-light\");\n    } else {\n      bodyEl.classList.add(\"quarto-light\");\n      bodyEl.classList.remove(\"quarto-dark\");\n    }\n  }\n  const toggleBodyColorPrimary = () =\u003e {\n    const bsSheetEl = window.document.querySelector(\"link#quarto-bootstrap\");\n    if (bsSheetEl) {\n      toggleBodyColorMode(bsSheetEl);\n    }\n  }\n  toggleBodyColorPrimary();  \n  const icon = \"\";\n  const anchorJS = new window.AnchorJS();\n  anchorJS.options = {\n    placement: 'right',\n    icon: icon\n  };\n  anchorJS.add('.anchored');\n  const isCodeAnnotation = (el) =\u003e {\n    for (const clz of el.classList) {\n      if (clz.startsWith('code-annotation-')) {                     \n        return true;\n      }\n    }\n    return false;\n  }\n  const clipboard = new window.ClipboardJS('.code-copy-button', {\n    text: function(trigger) {\n      const codeEl = trigger.previousElementSibling.cloneNode(true);\n      for (const childEl of codeEl.children) {\n        if (isCodeAnnotation(childEl)) {\n          childEl.remove();\n        }\n      }\n      return codeEl.innerText;\n    }\n  });\n  clipboard.on('success', function(e) {\n    // button target\n    const button = e.trigger;\n    // don't keep focus\n    button.blur();\n    // flash \"checked\"\n    button.classList.add('code-copy-button-checked');\n    var currentTitle = button.getAttribute(\"title\");\n    button.setAttribute(\"title\", \"Copied!\");\n    let tooltip;\n    if (window.bootstrap) {\n      button.setAttribute(\"data-bs-toggle\", \"tooltip\");\n      button.setAttribute(\"data-bs-placement\", \"left\");\n      button.setAttribute(\"data-bs-title\", \"Copied!\");\n      tooltip = new bootstrap.Tooltip(button, \n        { trigger: \"manual\", \n          customClass: \"code-copy-button-tooltip\",\n          offset: [0, -8]});\n      tooltip.show();    \n    }\n    setTimeout(function() {\n      if (tooltip) {\n        tooltip.hide();\n        button.removeAttribute(\"data-bs-title\");\n        button.removeAttribute(\"data-bs-toggle\");\n        button.removeAttribute(\"data-bs-placement\");\n      }\n      button.setAttribute(\"title\", currentTitle);\n      button.classList.remove('code-copy-button-checked');\n    }, 1000);\n    // clear code selection\n    e.clearSelection();\n  });\n  function tippyHover(el, contentFn) {\n    const config = {\n      allowHTML: true,\n      content: contentFn,\n      maxWidth: 500,\n      delay: 100,\n      arrow: false,\n      appendTo: function(el) {\n          return el.parentElement;\n      },\n      interactive: true,\n      interactiveBorder: 10,\n      theme: 'quarto',\n      placement: 'bottom-start'\n    };\n    window.tippy(el, config); \n  }\n  const noterefs = window.document.querySelectorAll('a[role=\"doc-noteref\"]');\n  for (var i=0; i\u003cnoterefs.length; i++) {\n    const ref = noterefs[i];\n    tippyHover(ref, function() {\n      // use id or data attribute instead here\n      let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');\n      try { href = new URL(href).hash; } catch {}\n      const id = href.replace(/^#\\/?/, \"\");\n      const note = window.document.getElementById(id);\n      return note.innerHTML;\n    });\n  }\n      let selectedAnnoteEl;\n      const selectorForAnnotation = ( cell, annotation) =\u003e {\n        let cellAttr = 'data-code-cell=\"' + cell + '\"';\n        let lineAttr = 'data-code-annotation=\"' +  annotation + '\"';\n        const selector = 'span[' + cellAttr + '][' + lineAttr + ']';\n        return selector;\n      }\n      const selectCodeLines = (annoteEl) =\u003e {\n        const doc = window.document;\n        const targetCell = annoteEl.getAttribute(\"data-target-cell\");\n        const targetAnnotation = annoteEl.getAttribute(\"data-target-annotation\");\n        const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));\n        const lines = annoteSpan.getAttribute(\"data-code-lines\").split(\",\");\n        const lineIds = lines.map((line) =\u003e {\n          return targetCell + \"-\" + line;\n        })\n        let top = null;\n        let height = null;\n        let parent = null;\n        if (lineIds.length \u003e 0) {\n            //compute the position of the single el (top and bottom and make a div)\n            const el = window.document.getElementById(lineIds[0]);\n            top = el.offsetTop;\n            height = el.offsetHeight;\n            parent = el.parentElement.parentElement;\n          if (lineIds.length \u003e 1) {\n            const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);\n            const bottom = lastEl.offsetTop + lastEl.offsetHeight;\n            height = bottom - top;\n          }\n          if (top !== null \u0026\u0026 height !== null \u0026\u0026 parent !== null) {\n            // cook up a div (if necessary) and position it \n            let div = window.document.getElementById(\"code-annotation-line-highlight\");\n            if (div === null) {\n              div = window.document.createElement(\"div\");\n              div.setAttribute(\"id\", \"code-annotation-line-highlight\");\n              div.style.position = 'absolute';\n              parent.appendChild(div);\n            }\n            div.style.top = top - 2 + \"px\";\n            div.style.height = height + 4 + \"px\";\n            let gutterDiv = window.document.getElementById(\"code-annotation-line-highlight-gutter\");\n            if (gutterDiv === null) {\n              gutterDiv = window.document.createElement(\"div\");\n              gutterDiv.setAttribute(\"id\", \"code-annotation-line-highlight-gutter\");\n              gutterDiv.style.position = 'absolute';\n              const codeCell = window.document.getElementById(targetCell);\n              const gutter = codeCell.querySelector('.code-annotation-gutter');\n              gutter.appendChild(gutterDiv);\n            }\n            gutterDiv.style.top = top - 2 + \"px\";\n            gutterDiv.style.height = height + 4 + \"px\";\n          }\n          selectedAnnoteEl = annoteEl;\n        }\n      };\n      const unselectCodeLines = () =\u003e {\n        const elementsIds = [\"code-annotation-line-highlight\", \"code-annotation-line-highlight-gutter\"];\n        elementsIds.forEach((elId) =\u003e {\n          const div = window.document.getElementById(elId);\n          if (div) {\n            div.remove();\n          }\n        });\n        selectedAnnoteEl = undefined;\n      };\n      // Attach click handler to the DT\n      const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');\n      for (const annoteDlNode of annoteDls) {\n        annoteDlNode.addEventListener('click', (event) =\u003e {\n          const clickedEl = event.target;\n          if (clickedEl !== selectedAnnoteEl) {\n            unselectCodeLines();\n            const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');\n            if (activeEl) {\n              activeEl.classList.remove('code-annotation-active');\n            }\n            selectCodeLines(clickedEl);\n            clickedEl.classList.add('code-annotation-active');\n          } else {\n            // Unselect the line\n            unselectCodeLines();\n            clickedEl.classList.remove('code-annotation-active');\n          }\n        });\n      }\n  const findCites = (el) =\u003e {\n    const parentEl = el.parentElement;\n    if (parentEl) {\n      const cites = parentEl.dataset.cites;\n      if (cites) {\n        return {\n          el,\n          cites: cites.split(' ')\n        };\n      } else {\n        return findCites(el.parentElement)\n      }\n    } else {\n      return undefined;\n    }\n  };\n  var bibliorefs = window.document.querySelectorAll('a[role=\"doc-biblioref\"]');\n  for (var i=0; i\u003cbibliorefs.length; i++) {\n    const ref = bibliorefs[i];\n    const citeInfo = findCites(ref);\n    if (citeInfo) {\n      tippyHover(citeInfo.el, function() {\n        var popup = window.document.createElement('div');\n        citeInfo.cites.forEach(function(cite) {\n          var citeDiv = window.document.createElement('div');\n          citeDiv.classList.add('hanging-indent');\n          citeDiv.classList.add('csl-entry');\n          var biblioDiv = window.document.getElementById('ref-' + cite);\n          if (biblioDiv) {\n            citeDiv.innerHTML = biblioDiv.innerHTML;\n          }\n          popup.appendChild(citeDiv);\n        });\n        return popup.innerHTML;\n      });\n    }\n  }\n});\n\u003c/script\u003e\n\u003c/div\u003e \u003c!-- /content --\u003e\n\n\n\n\u003c/body\u003e\u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futdata%2Frwd-r-leso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futdata%2Frwd-r-leso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futdata%2Frwd-r-leso/lists"}