

{"id":12626,"date":"2020-01-13T09:20:29","date_gmt":"2020-01-13T14:20:29","guid":{"rendered":"https:\/\/rud.is\/b\/?p=12626"},"modified":"2020-02-11T14:21:03","modified_gmt":"2020-02-11T19:21:03","slug":"convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/","title":{"rendered":"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export)"},"content":{"rendered":"<p><strong>UPDATE 2020-02-11<\/strong> Apple now supports downloading transactions as CSV or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Open_Financial_Exchange\">OFX<\/a>! (via <a href=\"https:\/\/www.macobserver.com\/tips\/quick-tip\/apple-card-supports-ofx\/\">MacObserver<\/a>).<\/p>\n<hr \/>\n<p>I saw <a href=\"https:\/\/www.cnbc.com\/2020\/01\/11\/export-apple-card-transactions-with-csvwtf.html\">this CNBC article<\/a> on an in-theory browser client-side-only conversion utility for taking Apple Card PDF statements and turning them into CSV files.<\/p>\n<p>Since I (a) never trust any browser or site and (b) the article indicated that there is a $5 fee to avoid the &#8220;single random transaction removal&#8221;, I felt compelled to throw together an R script to do this for at least folks who are capable of setting up R so that all processing is guaranteed to be local.<\/p>\n<p>FWIW the site does appear to do what it says on the tin (all processing is, indeed, local). That doesn&#8217;t mean one of your extensions isn&#8217;t spying on you, nor does it mean that the site could not turn evil someday (one its own or via an attacker compromise).<\/p>\n<pre><code class=\"language-r\">read_apple_card_statement &lt;- function(path) {\n\n  require(stringi)\n  require(pdftools)\n  require(tidyverse)\n\n  # make sure the file exists\n  path &lt;- path.expand(path[1])\n  if (!file.exists(path)) stop(\"File '\", path, \"' not found.\", call.=FALSE)\n\n  pdf_text(path) %&gt;% # read it in\n    stri_split_lines() %&gt;% # turn \\n to a separate character vector element\n    unlist() %&gt;% # flatten it\n    stri_trim_both() %&gt;% # get rid of leading\/trailing spaces\n    keep(stri_detect_regex, \"^([[:digit:]]{2}\/[[:digit:]]{2}\/[[:digit:]]{4})\") %&gt;% # find lines that start with a date\n    map_df(~{\n      rec &lt;- as.list(unlist(stri_split_regex(.x, \"[[:space:]]{3,}\"))) # find the columns\n      if (stri_detect_fixed(.x, \"%\")) { # lines with a `%` in them distinguish charges from payments\n        rec &lt;- set_names(rec, c(\"date\", \"description\", \"daily_cash_pct\", \"daily_cash_amt\", \"amt\")) # ones with charges have cash back columns\n      } else {\n        rec &lt;- set_names(rec, c(\"date\", \"description\", \"amt\")) # ones w\/o % do not\n      }\n    }) %&gt;%\n    mutate(\n      date = lubridate::mdy(date), # make dates dates\n      amt = stri_replace_first_fixed(amt, \"$\", \"\") %&gt;% parse_number(), # dollars to numbers\n      daily_cash_pct = parse_number(daily_cash_pct)\/100, # % to numbers\n      daily_cash_amt = parse_number(daily_cash_amt) # dollars to numbners\n    )\n\n}\n\nlist.files(\"~\/Downloads\", pattern = \"Apple Card Statement\", full.names = TRUE) %&gt;% \n  map_df(read_apple_card_statement)\n<\/code><\/pre>\n<p>You can send the PDF statements from the Apple Card app to your Mac via Air Drop and it will put them into <code>~\/Downloads<\/code>. I recommend putting them somewhere else since you&#8217;ve likely given all sorts of applications access to <code>~\/Downloads<\/code> when prompted to on Catalina (yay security theatre). Wherever you put them, you can read them individually with <code>read_apple_card_statment()<\/code> or you can then just <code>list_files()<\/code> and bind all the individual statements together:<\/p>\n<pre><code class=\"language-r\">list.files(\"~\/WhereYouPutAppleCardStatements\", pattern = \"Apple Card Statement\", full.names = TRUE) %&gt;% \n  map_df(read_apple_card_statement)\n<\/code><\/pre>\n<h3>FIN<\/h3>\n<p>Be very wary of what you put your trust into online. Just because a site is benign one day does not mean it won&#8217;t be malicious (deliberately or otherwise) the next. Also, lobby Apple to provide data in more useful formats, especially since it provides applications like Numbers for free with their operating system.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UPDATE 2020-02-11 Apple now supports downloading transactions as CSV or OFX! (via MacObserver). I saw this CNBC article on an in-theory browser client-side-only conversion utility for taking Apple Card PDF statements and turning them into CSV files. Since I (a) never trust any browser or site and (b) the article indicated that there is a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[91],"tags":[],"class_list":["post-12626","post","type-post","status-publish","format-standard","hentry","category-r"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export) - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export) - rud.is\" \/>\n<meta property=\"og:description\" content=\"UPDATE 2020-02-11 Apple now supports downloading transactions as CSV or OFX! (via MacObserver). I saw this CNBC article on an in-theory browser client-side-only conversion utility for taking Apple Card PDF statements and turning them into CSV files. Since I (a) never trust any browser or site and (b) the article indicated that there is a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-13T14:20:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-02-11T19:21:03+00:00\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\\\/Excel\\\/database export)\",\"datePublished\":\"2020-01-13T14:20:29+00:00\",\"dateModified\":\"2020-02-11T19:21:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/\"},\"wordCount\":288,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/\",\"name\":\"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\\\/Excel\\\/database export) - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"datePublished\":\"2020-01-13T14:20:29+00:00\",\"dateModified\":\"2020-02-11T19:21:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2020\\\/01\\\/13\\\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\\\/Excel\\\/database export)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rud.is\\\/b\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\\\/\\\/rud.is\"],\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/author\\\/hrbrmstr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export) - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/","og_locale":"en_US","og_type":"article","og_title":"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export) - rud.is","og_description":"UPDATE 2020-02-11 Apple now supports downloading transactions as CSV or OFX! (via MacObserver). I saw this CNBC article on an in-theory browser client-side-only conversion utility for taking Apple Card PDF statements and turning them into CSV files. Since I (a) never trust any browser or site and (b) the article indicated that there is a [&hellip;]","og_url":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/","og_site_name":"rud.is","article_published_time":"2020-01-13T14:20:29+00:00","article_modified_time":"2020-02-11T19:21:03+00:00","author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export)","datePublished":"2020-01-13T14:20:29+00:00","dateModified":"2020-02-11T19:21:03+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/"},"wordCount":288,"commentCount":3,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/","url":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/","name":"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export) - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"datePublished":"2020-01-13T14:20:29+00:00","dateModified":"2020-02-11T19:21:03+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2020\/01\/13\/convert-apple-card-pdf-statements-to-tidy-data-i-e-for-csv-excel-database-export\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Convert Apple Card PDF Statements to Tidy Data (i.e. for CSV\/Excel\/database export)"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-3hE","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3022,"url":"https:\/\/rud.is\/b\/2014\/09\/14\/an-alfred-os-x-workflow-for-weather-underground-personal-weather-station-pws-data\/","url_meta":{"origin":12626,"position":0},"title":"An Alfred (OS X) Workflow for Weather Underground Personal Weather Station (PWS) Data","author":"hrbrmstr","date":"2014-09-14","format":false,"excerpt":"I've operated a [Weather Underground](http:\/\/www.wunderground.com\/) [Personal Weather Station](http:\/\/www.wunderground.com\/weatherstation\/about.asp) (PWS) [[KMEBERWI7](http:\/\/www.wunderground.com\/personal-weather-station\/dashboard?ID=KMEBERWI7#history)] off-and-on (hardware issues notwithstanding) for as long as I can remember, and I thought it was about time to finally do an Alfred\u2194PWS mashup. My personal requirements were quite modest: - 5 reading history (including most current) - Ability to\u2026","rel":"","context":"In &quot;Alfred&quot;","block_context":{"text":"Alfred","link":"https:\/\/rud.is\/b\/category\/alfred\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3784,"url":"https:\/\/rud.is\/b\/2015\/11\/11\/using-monetdblite-with-real-world-csv-files\/","url_meta":{"origin":12626,"position":1},"title":"Using MonetDB[Lite] with real-world CSV files","author":"hrbrmstr","date":"2015-11-11","format":false,"excerpt":"[MonetDBLite](https:\/\/www.monetdb.org\/blog\/monetdblite-r) (for R) was announced\/released today and, while the examples they provide are compelling there's a \"gotcha\" for potential new folks using SQL in general and SQL + MonetDB + R together. The toy example on the site shows dumping `mtcars` with `dbWriteTable` and then doing things. Real-world CSV files\u2026","rel":"","context":"In &quot;monetdb&quot;","block_context":{"text":"monetdb","link":"https:\/\/rud.is\/b\/category\/monetdb\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3841,"url":"https:\/\/rud.is\/b\/2016\/01\/03\/zellingenach-a-visual-exploration-of-the-spatial-patterns-in-the-endings-of-german-town-and-village-names-in-r\/","url_meta":{"origin":12626,"position":2},"title":"Zellingenach: A visual exploration of the spatial patterns in the endings of German town and village names in R","author":"hrbrmstr","date":"2016-01-03","format":false,"excerpt":"Moritz Stefaner started off 2016 with a [very spiffy post](http:\/\/truth-and-beauty.net\/experiments\/ach-ingen-zell\/) on _\"a visual exploration of the spatial patterns in the endings of German town and village names\"_. Moritz was [exploring some new data processing & visualization tools](https:\/\/github.com\/moritzstefaner\/ach-ingen-zell) for the post, but when I saw what he was doing I wondered\u2026","rel":"","context":"In &quot;cartography&quot;","block_context":{"text":"cartography","link":"https:\/\/rud.is\/b\/category\/cartography\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/01\/rud_is_zellingenach_html.png?fit=597%2C798&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/01\/rud_is_zellingenach_html.png?fit=597%2C798&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/01\/rud_is_zellingenach_html.png?fit=597%2C798&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":4560,"url":"https:\/\/rud.is\/b\/2016\/07\/26\/use-quick-formula-functions-in-purrrmap-base-vs-tidtyverse-idiom-comparisonsexamples\/","url_meta":{"origin":12626,"position":3},"title":"Use quick formula functions in purrr::map (+ base vs tidtyverse idiom comparisons\/examples)","author":"hrbrmstr","date":"2016-07-26","format":false,"excerpt":"I've converted the vast majority of my *apply usage over to purrr functions. In an attempt to make this a quick post, I'll refrain from going into all the benefits of the purrr package. Instead, I'll show just one thing that's super helpful: formula functions. After seeing this Quartz article\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":6046,"url":"https:\/\/rud.is\/b\/2017\/05\/31\/drilling-into-csvs-teaser-trailer\/","url_meta":{"origin":12626,"position":4},"title":"Drilling Into CSVs \u2014 Teaser Trailer","author":"hrbrmstr","date":"2017-05-31","format":false,"excerpt":"I used reading a directory of CSVs as the foundational example in my recent post on idioms. During my exchange with Matt, Hadley and a few others -- in the crazy Twitter thread that spawned said post -- I mentioned that I'd personally \"just use Drill\u201d. I'll use this post\u2026","rel":"","context":"In &quot;Apache Drill&quot;","block_context":{"text":"Apache Drill","link":"https:\/\/rud.is\/b\/category\/apache-drill\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13688,"url":"https:\/\/rud.is\/b\/2022\/12\/20\/2022-hanukkah-of-data-puzzle-2\/","url_meta":{"origin":12626,"position":5},"title":"2022 Hanukkah of Data \u2022 Puzzle 2","author":"hrbrmstr","date":"2022-12-20","format":false,"excerpt":"Ref: https:\/\/rud.is\/b\/2022\/12\/19\/2022-hanukkah-of-data-puzzle-1\/ library(tidyverse) cust <- read_csv(\"~\/Downloads\/noahs-csv\/noahs-customers.csv\") orders_items <- read_csv(\"~\/Downloads\/noahs-csv\/noahs-orders_items.csv\") orders <- read_csv(\"~\/Downloads\/noahs-csv\/noahs-orders.csv\") products <- read_csv(\"~\/Downloads\/noahs-csv\/noahs-products.csv\") orders_items |> left_join(products) -> oip orders |> left_join(oip) -> orders orders |> filter( 2017 == lubridate::year(ordered), grepl(\"cleaner|bagel\", desc, ignore.case=TRUE) ) |> group_by(customerid, orderid) |> summarise( ord = paste0(desc, collapse=\"; \"), n = n() ) |>\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/12626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=12626"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/12626\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=12626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=12626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=12626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}