

{"id":10257,"date":"2018-05-08T09:10:02","date_gmt":"2018-05-08T14:10:02","guid":{"rendered":"https:\/\/rud.is\/b\/?p=10257"},"modified":"2018-05-08T10:28:25","modified_gmt":"2018-05-08T15:28:25","slug":"wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/","title":{"rendered":"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report"},"content":{"rendered":"<p>The U.S. FBI Internet Crime Complaint Center was established in 2000 to receive complaints of Internet crime. They produce an annual report, <a href=\"https:\/\/www.fbi.gov\/news\/pressrel\/press-releases\/fbi-releases-the-ic3-2017-internet-crime-report-and-calls-for-increased-public-awareness\">just released 2017&#8217;s edition<\/a>, and I need the data from it. Since I have to wrangle it out, I thought some folks might like to play long at home, especially since it turns out I had to use both <code>tabulizer<\/code> and <code>pdftools<\/code> to accomplish my goal.<\/p>\n<p>Concepts presented:<\/p>\n<ul>\n<li>PDF scraping (with both <code>tabulizer<\/code> and <code>pdftools<\/code>)<\/li>\n<li><code>asciiruler<\/code><\/li>\n<li>general string manipulation<\/li>\n<li><code>case_when()<\/code> vs <code>ifelse()<\/code> for text cleanup<\/li>\n<li>reformatting data for <code>ggraph<\/code> treemaps<\/li>\n<\/ul>\n<p>Let&#8217;s get started! (NOTE: you can click\/tap on any image for a larger version)<\/p>\n<pre>\n<code class=\"language-r\">\nlibrary(stringi)\nlibrary(pdftools)\nlibrary(tabulizer)\nlibrary(igraph)\nlibrary(ggraph) # devtools::install_github(\"thomasp85\/ggraph\")\nlibrary(hrbrthemes)\nlibrary(tidyverse)\n\nic3_file <- \"~\/Data\/2017-ic3-report.pdf\" # change \"~\/Data\" for your system\n\nif (!file.exists(ic3_file)) { # don't waste anyone's bandwidth\n  download.file(\"https:\/\/pdf.ic3.gov\/2017_IC3Report.pdf\", ic3_file)\n}\n<\/code>\n<\/pre>\n<p>Let's try <code>pdftools<\/code> since I like text wrangling<\/p>\n<pre>\n<code class=\"language-r\">\ncat(pdftools::pdf_text(ic3_file)[[20]])\n##                                                             2017 Internet Crime Report         20\n## 2017 Crime Types\n##                                  By Victim Count\n## Crime Type                         Victims     Crime Type                            Victims\n## Non-Payment\/Non-Delivery           84,079      Misrepresentation                        5,437\n## Personal Data Breach               30,904      Corporate Data Breach                    3,785\n## Phishing\/Vishing\/Smishing\/Pharming 25,344      Investment                               3,089\n## Overpayment                        23,135      Malware\/Scareware\/Virus                  3,089\n## No Lead Value                      20,241      Lottery\/Sweepstakes                      3,012\n## Identity Theft                     17,636      IPR\/Copyright and                        2,644\n##                                                Counterfeit\n## Advanced Fee                       16,368      Ransomware                               1,783\n## Harassment\/Threats of Violence     16,194      Crimes Against Children                  1,300\n## Employment                         15,784      Denial of Service\/TDoS                   1,201\n## BEC\/EAC                            15,690      Civil Matter                             1,057\n## Confidence Fraud\/Romance           15,372      Re-shipping                              1,025\n## Credit Card Fraud                  15,220      Charity                                    436\n## Extortion                          14,938      Health Care Related                        406\n## Other                              14,023      Gambling                                   203\n## Tech Support                       10,949      Terrorism                                  177\n## Real Estate\/Rental                  9,645      Hacktivist                                 158\n## Government Impersonation            9,149\n## Descriptors*\n## Social Media                       19,986      *These descriptors relate to the medium or\n## Virtual Currency                    4,139      tool used to facilitate the crime, and are used\n##                                                by the IC3 for tracking purposes only. They\n##                                                are available only after another crime type\n##                                                has been selected.\n<\/code>\n<\/pre>\n<p>OK, I don't like text wrangling that much. How about <code>tabulizer<\/code>?<\/p>\n<pre>\n<code class=\"language-r\">\ntabulizer::extract_tables(ic3_file, pages = 20)\n\n## list()\n<\/code>\n<\/pre>\n<p>Well, that's disappointing. Perhaps if we target the tables on the PDF pages we'll have better luck. You can find them on pages 20 and 21 if you downloaded your own copy. Here are some smaller, static views of them:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3-2017-pgs.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10260\" data-permalink=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/ic3-2017-pgs\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3-2017-pgs.png?fit=656%2C1590&amp;ssl=1\" data-orig-size=\"656,1590\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ic3-2017-pgs\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3-2017-pgs.png?fit=422%2C1024&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3-2017-pgs.png?resize=510%2C1236&#038;ssl=1\" alt=\"\" width=\"510\" height=\"1236\" class=\"aligncenter size-full wp-image-10260\" \/><\/a><\/p>\n<p>I can't show the <code>tabulizer<\/code> pane (well I <em>could<\/em> if I had time to screen capture and make an animated gif) but run this to get the areas:<\/p>\n<pre>\n<code class=\"language-r\">\nareas <- tabulizer::locate_areas(ic3_file, pages = 20:21)\n\n# this is what ^^ produces for my rectangles:\n\nlist(\n  c(top = 137.11911357341, left = 66.864265927978, bottom = 413.5512465374, right = 519.90581717452),\n  c(top = 134.92520775623, left = 64.670360110803, bottom = 458.52631578947, right = 529.7783933518)\n) -> areas\n<\/code>\n<\/pre>\n<p>Now, see if <code>tabulizer<\/code> can do a better job. We'll start with the first page:<\/p>\n<pre>\n<code class=\"language-r\">\ntab <- tabulizer::extract_tables(ic3_file, pages = 20, area = areas[1])\n\ntab\n## [[1]]\n##       [,1]                                 [,2]              \n##  [1,] \"\"                                   \"By Victim Cou nt\"\n##  [2,] \"Crime Type\"                         \"Victims\"         \n##  [3,] \"Non-Payment\/Non-Delivery\"           \"84,079\"          \n##  [4,] \"Personal Data Breach\"               \"30,904\"          \n##  [5,] \"Phishing\/Vishing\/Smishing\/Pharming\" \"25,344\"          \n##  [6,] \"Overpayment\"                        \"23,135\"          \n##  [7,] \"No Lead Value\"                      \"20,241\"          \n##  [8,] \"Identity Theft\"                     \"17,636\"          \n##  [9,] \"\"                                   \"\"                \n## [10,] \"Advanced Fee\"                       \"16,368\"          \n## [11,] \"Harassment\/Threats of Violence\"     \"16,194\"          \n## [12,] \"Employment\"                         \"15,784\"          \n## [13,] \"BEC\/EAC\"                            \"15,690\"          \n## [14,] \"Confidence Fraud\/Romance\"           \"15,372\"          \n## [15,] \"Credit Card Fraud\"                  \"15,220\"          \n## [16,] \"Extortion\"                          \"14,938\"          \n## [17,] \"Other\"                              \"14,023\"          \n## [18,] \"Tech Support\"                       \"10,949\"          \n## [19,] \"Real Estate\/Rental\"                 \"9,645\"           \n## [20,] \"G overnment Impersonation\"          \"9,149\"           \n## [21,] \"\"                                   \"\"                \n## [22,] \"Descriptors*\"                       \"\"                \n##       [,3]                      [,4]     \n##  [1,] \"\"                        \"\"       \n##  [2,] \"Crime Type\"              \"Victims\"\n##  [3,] \"Misrepresentation\"       \"5,437\"  \n##  [4,] \"Corporate Data Breach\"   \"3,785\"  \n##  [5,] \"Investment\"              \"3,089\"  \n##  [6,] \"Malware\/Scareware\/Virus\" \"3,089\"  \n##  [7,] \"Lottery\/Sweepstakes\"     \"3,012\"  \n##  [8,] \"IPR\/Copyright and\"       \"2,644\"  \n##  [9,] \"Counterfeit\"             \"\"       \n## [10,] \"Ransomware\"              \"1,783\"  \n## [11,] \"Crimes Against Children\" \"1,300\"  \n## [12,] \"Denial of Service\/TDoS\"  \"1,201\"  \n## [13,] \"Civil Matter\"            \"1,057\"  \n## [14,] \"Re-shipping\"             \"1,025\"  \n## [15,] \"Charity\"                 \"436\"    \n## [16,] \"Health Care Related\"     \"406\"    \n## [17,] \"Gambling\"                \"203\"    \n## [18,] \"Terrorism\"               \"177\"    \n## [19,] \"Hacktivist\"              \"158\"    \n## [20,] \"\"                        \"\"       \n## [21,] \"\"                        \"\"       \n## [22,] \"\"                        \"\"\n<\/code>\n<\/pre>\n<p>Looking good. How does it look data-frame'd?<\/p>\n<pre>\n<code class=\"language-r\">\ntab <- as_data_frame(tab[[1]])\n\nprint(tab, n=50)\n## # A tibble: 22 x 4\n##    V1                                 V2               V3            V4   \n##  1 \"\"                                 By Victim Cou nt \"\"            \"\"   \n##  2 Crime Type                         Victims          Crime Type    Vict\u2026\n##  3 Non-Payment\/Non-Delivery           84,079           Misrepresent\u2026 5,437\n##  4 Personal Data Breach               30,904           Corporate Da\u2026 3,785\n##  5 Phishing\/Vishing\/Smishing\/Pharming 25,344           Investment    3,089\n##  6 Overpayment                        23,135           Malware\/Scar\u2026 3,089\n##  7 No Lead Value                      20,241           Lottery\/Swee\u2026 3,012\n##  8 Identity Theft                     17,636           IPR\/Copyrigh\u2026 2,644\n##  9 \"\"                                 \"\"               Counterfeit   \"\"   \n## 10 Advanced Fee                       16,368           Ransomware    1,783\n## 11 Harassment\/Threats of Violence     16,194           Crimes Again\u2026 1,300\n## 12 Employment                         15,784           Denial of Se\u2026 1,201\n## 13 BEC\/EAC                            15,690           Civil Matter  1,057\n## 14 Confidence Fraud\/Romance           15,372           Re-shipping   1,025\n## 15 Credit Card Fraud                  15,220           Charity       436  \n## 16 Extortion                          14,938           Health Care \u2026 406  \n## 17 Other                              14,023           Gambling      203  \n## 18 Tech Support                       10,949           Terrorism     177  \n## 19 Real Estate\/Rental                 9,645            Hacktivist    158  \n## 20 G overnment Impersonation          9,149            \"\"            \"\"   \n## 21 \"\"                                 \"\"               \"\"            \"\"   \n## 22 Descriptors*                       \"\"               \"\"            \"\"\n<\/code>\n<\/pre>\n<p>Still pretty good. Cleaning it up is pretty simple from here. Just filter out some rows, parse some numbers, fix some chopped labels and boom - done:<\/p>\n<pre>\n<code class=\"language-r\">\ntab <- filter(tab[3:21,], !V2 == \"\")\n\nbind_rows(\n  select(tab, crime = V1, n_victims = V2),\n  select(tab, crime = V3, n_victims = V4)\n) %>%\n  filter(crime != \"\") %>%\n  mutate(n_victims = readr::parse_number(n_victims)) %>%\n  mutate(crime = case_when(\n    stri_detect_fixed(crime, \"G o\") ~ \"Government Impersonation\",\n    stri_detect_fixed(crime, \"IPR\/C\") ~ \"IPR\/Copyright and Counterfeit\",\n    TRUE ~ crime\n  )) %>%\n  print(n=50) -> ic3_2017_crimes_victim_ct\n## # A tibble: 33 x 2\n##    crime                              n_victims\n##    <chr>                                  <dbl>\n##  1 Non-Payment\/Non-Delivery              84079.\n##  2 Personal Data Breach                  30904.\n##  3 Phishing\/Vishing\/Smishing\/Pharming    25344.\n##  4 Overpayment                           23135.\n##  5 No Lead Value                         20241.\n##  6 Identity Theft                        17636.\n##  7 Advanced Fee                          16368.\n##  8 Harassment\/Threats of Violence        16194.\n##  9 Employment                            15784.\n## 10 BEC\/EAC                               15690.\n## 11 Confidence Fraud\/Romance              15372.\n## 12 Credit Card Fraud                     15220.\n## 13 Extortion                             14938.\n## 14 Other                                 14023.\n## 15 Tech Support                          10949.\n## 16 Real Estate\/Rental                     9645.\n## 17 Government Impersonation               9149.\n## 18 Misrepresentation                      5437.\n## 19 Corporate Data Breach                  3785.\n## 20 Investment                             3089.\n## 21 Malware\/Scareware\/Virus                3089.\n## 22 Lottery\/Sweepstakes                    3012.\n## 23 IPR\/Copyright and Counterfeit          2644.\n## 24 Ransomware                             1783.\n## 25 Crimes Against Children                1300.\n## 26 Denial of Service\/TDoS                 1201.\n## 27 Civil Matter                           1057.\n## 28 Re-shipping                            1025.\n## 29 Charity                                 436.\n## 30 Health Care Related                     406.\n## 31 Gambling                                203.\n## 32 Terrorism                               177.\n## 33 Hacktivist                              158.\n<\/code>\n<\/pre>\n<p>Now, on to page 2!<\/p>\n<pre>\n<code class=\"language-r\">\ntab <- tabulizer::extract_tables(ic3_file, pages = 21, area = areas[2])\n\ntab\n## [[1]]\n##       [,1]                         [,2]                                \n##  [1,] \"\"                           \"By Victim Lo ss\"                   \n##  [2,] \"Crime Type\"                 \"Loss  Crime Type\"                  \n##  [3,] \"BEC\/EAC\"                    \"$676,151,185 Misrepresentation\"    \n##  [4,] \"Confidence Fraud\/Romance\"   \"$211,382,989 Harassment\/Threats\"   \n##  [5,] \"\"                           \"of Violence\"                       \n##  [6,] \"Non-Payment\/Non-Delivery\"   \"$141,110,441 Government\"           \n##  [7,] \"\"                           \"Impersonation\"                     \n##  [8,] \"Investment\"                 \"$96,844,144 Civil Matter\"          \n##  [9,] \"Personal Data Breach\"       \"$77,134,865 IPR\/Copyright and\"     \n## [10,] \"\"                           \"Counterfeit\"                       \n## [11,] \"Identity Theft\"             \"$66,815,298 Malware\/Scareware\/\"    \n## [12,] \"\"                           \"Virus\"                             \n## [13,] \"Corporate Data Breach\"      \"$60,942,306 Ransomware\"            \n## [14,] \"Advanced Fee\"               \"$57,861,324 Denial of Service\/TDoS\"\n## [15,] \"Credit Card Fraud\"          \"$57,207,248 Charity\"               \n## [16,] \"Real Estate\/Rental\"         \"$56,231,333 Health Care Related\"   \n## [17,] \"Overpayment\"                \"$53,450,830 Re-Shipping\"           \n## [18,] \"Employment\"                 \"$38,883,616 Gambling\"              \n## [19,] \"Phishing\/Vishing\/Smishing\/\" \"$29,703,421 Crimes Against\"        \n## [20,] \"Pharming\"                   \"Children\"                          \n## [21,] \"Other\"                      \"$23,853,704 Hacktivist\"            \n## [22,] \"Lottery\/Sweepstakes\"        \"$16,835,001 Terrorism\"             \n## [23,] \"Extortion\"                  \"$15,302,792 N o Lead Value\"        \n## [24,] \"Tech Support\"               \"$14,810,080\"                       \n## [25,] \"\"                           \"\"                                  \n## [26,] \"\"                           \"\"                                  \n##       [,3]          \n##  [1,] \"\"            \n##  [2,] \"Loss\"        \n##  [3,] \"$14,580,907\" \n##  [4,] \"$12,569,185\" \n##  [5,] \"\"            \n##  [6,] \"$12,467,380\" \n##  [7,] \"\"            \n##  [8,] \"$5,766,550\"  \n##  [9,] \"$5,536,912\"  \n## [10,] \"\"            \n## [11,] \"$5,003,434\"  \n## [12,] \"\"            \n## [13,] \"$2,344,365\"  \n## [14,] \"$1,466,195\"  \n## [15,] \"$1,405,460\"  \n## [16,] \"$925,849\"    \n## [17,] \"$809,746\"    \n## [18,] \"$598,853\"    \n## [19,] \"$46,411\"     \n## [20,] \"\"            \n## [21,] \"$20,147\"     \n## [22,] \"$18,926\"     \n## [23,] \"$0\"          \n## [24,] \"\"            \n## [25,] \"\"            \n## [26,] \"Descriptors*\"\n<\/code>\n<\/pre>\n<p><code>:facepalm:<\/code> That's disappointing. Way too much scrambled content. So, back to <code>pdftools<\/code>!<\/p>\n<pre>\n<code class=\"language-r\">\ncat(pg21 <- pdftools::pdf_text(ic3_file)[[21]])\n##                                                    Internet Crime Complaint Center         21\n## 2017 Crime Types Continued\n##                             By Victim Loss\n## Crime Type                 Loss            Crime Type                      Loss\n## BEC\/EAC                    $676,151,185    Misrepresentation               $14,580,907\n## Confidence Fraud\/Romance   $211,382,989    Harassment\/Threats              $12,569,185\n##                                            of Violence\n## Non-Payment\/Non-Delivery   $141,110,441    Government                      $12,467,380\n##                                            Impersonation\n## Investment                  $96,844,144    Civil Matter                      $5,766,550\n## Personal Data Breach        $77,134,865    IPR\/Copyright and                 $5,536,912\n##                                            Counterfeit\n## Identity Theft              $66,815,298    Malware\/Scareware\/                $5,003,434\n##                                            Virus\n## Corporate Data Breach       $60,942,306    Ransomware                        $2,344,365\n## Advanced Fee                $57,861,324    Denial of Service\/TDoS            $1,466,195\n## Credit Card Fraud           $57,207,248    Charity                           $1,405,460\n## Real Estate\/Rental          $56,231,333    Health Care Related                 $925,849\n## Overpayment                 $53,450,830    Re-Shipping                         $809,746\n## Employment                  $38,883,616    Gambling                            $598,853\n## Phishing\/Vishing\/Smishing\/  $29,703,421    Crimes Against                        $46,411\n## Pharming                                   Children\n## Other                       $23,853,704    Hacktivist                            $20,147\n## Lottery\/Sweepstakes         $16,835,001    Terrorism                             $18,926\n## Extortion                   $15,302,792    No Lead Value                                $0\n## Tech Support                $14,810,080\n##                                                                            Descriptors*\n## Social Media                $56,478,483    *These descriptors relate to the medium or\n## Virtual Currency            $58,391,810    tool used to facilitate the crime, and are used\n##                                            by the IC3 for tracking purposes only. They\n##                                            are available only after another crime type\n##                                            has been selected.\n<\/code>\n<\/pre>\n<p>This is (truthfully) not too bad. Just make columns from substring ranges and do some cleanup. The <code>asciiruler<\/code> package can definitely help here since it makes it much easier to see start\/stop points (I used a new editor pane and copied some lines into it):<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/asciiruler.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10274\" data-permalink=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/asciiruler\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/asciiruler.png?fit=1504%2C286&amp;ssl=1\" data-orig-size=\"1504,286\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"asciiruler\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/asciiruler.png?fit=510%2C97&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/asciiruler.png?resize=510%2C97&#038;ssl=1\" alt=\"\" width=\"510\" height=\"97\" class=\"aligncenter size-full wp-image-10274\" \/><\/a><\/p>\n<pre>\n<code class=\"language-r\">\nstri_split_lines(pg21)[[1]] %>%\n  .[-(1:4)] %>% # remove header & bits above header\n  .[-(26:30)] %>% # remove trailing bits\n  map_df(~{\n    list(\n      crime = stri_trim_both(c(stri_sub(.x, 1, 25), stri_sub(.x, 43, 73))),\n      cost = stri_trim_both(c(stri_sub(.x, 27, 39), stri_sub(.x, 74))) # no length\/to in the last one so it goes until eol\n    )\n  }) %>%\n  filter(!(crime == \"\" | cost == \"\")) %>% # get rid of blank rows\n  mutate(cost = suppressWarnings(readr::parse_number(cost))) %>% # we can use NAs generated to remove non-data rows\n  filter(!is.na(cost)) %>%\n  mutate(crime = case_when(\n    stri_detect_fixed(crime, \"Phish\") ~ \"Phishing\/Vishing\/Smishing\/Pharming\",\n    stri_detect_fixed(crime, \"Malware\") ~ \"Malware\/Scareware\/Virus\",\n    stri_detect_fixed(crime, \"IPR\") ~ \"IPR\/Copyright and Counterfeit\",\n    stri_detect_fixed(crime, \"Harassment\") ~ \"Harassment\/Threats of Violence\",\n    TRUE ~ crime\n  )) %>%\n  print(n=50) -> ic3_2017_crimes_cost\n## # A tibble: 35 x 2\n##    crime                                    cost\n##  1 BEC\/EAC                            676151185.\n##  2 Misrepresentation                   14580907.\n##  3 Confidence Fraud\/Romance           211382989.\n##  4 Harassment\/Threats of Violence      12569185.\n##  5 Non-Payment\/Non-Delivery           141110441.\n##  6 Government                          12467380.\n##  7 Investment                          96844144.\n##  8 Civil Matter                         5766550.\n##  9 Personal Data Breach                77134865.\n## 10 IPR\/Copyright and Counterfeit        5536912.\n## 11 Identity Theft                      66815298.\n## 12 Malware\/Scareware\/Virus              5003434.\n## 13 Corporate Data Breach               60942306.\n## 14 Ransomware                           2344365.\n## 15 Advanced Fee                        57861324.\n## 16 Denial of Service\/TDoS               1466195.\n## 17 Credit Card Fraud                   57207248.\n## 18 Charity                              1405460.\n## 19 Real Estate\/Rental                  56231333.\n## 20 Health Care Related                   925849.\n## 21 Overpayment                         53450830.\n## 22 Re-Shipping                           809746.\n## 23 Employment                          38883616.\n## 24 Gambling                              598853.\n## 25 Phishing\/Vishing\/Smishing\/Pharming  29703421.\n## 26 Crimes Against                         46411.\n## 27 Other                               23853704.\n## 28 Hacktivist                             20147.\n## 29 Lottery\/Sweepstakes                 16835001.\n## 30 Terrorism                              18926.\n## 31 Extortion                           15302792.\n## 32 No Lead Value                              0.\n## 33 Tech Support                        14810080.\n## 34 Social Media                        56478483.\n## 35 Virtual Currency                    58391810.\n<\/code>\n<\/pre>\n<p>Now that we have real data, we can take a look at the IC3 crimes by loss and victims.<\/p>\n<p>We'll use treemaps first then take a quick look at the relationship between counts and losses.<\/p>\n<p>Just need to do some data wrangling for <code>ggraph<\/code>, starting with victims:<\/p>\n<pre>\n<code class=\"language-r\">\nic3_2017_crimes_victim_ct %>%\n  mutate(crime = case_when(\n    crime == \"Government Impersonation\" ~ \"Government\\nImpersonation\",\n    crime == \"Corporate Data Breach\" ~ \"Corporate\\nData\\nBreach\",\n    TRUE ~ crime\n  )) %>%\n  mutate(crime = stri_replace_all_fixed(crime, \"\/\", \"\/\\n\")) %>%\n  mutate(grp = \"ROOT\") %>%\n  add_row(grp = \"ROOT\", crime=\"ROOT\", n_victims=0) %>%\n  select(grp, crime, n_victims) %>%\n  arrange(desc(n_victims)) -> gdf\n\nselect(gdf, -grp) %>%\n  mutate(lab = sprintf(\"%s\\n(%s)\", crime, scales::comma(n_victims))) %>%\n  mutate(lab = ifelse(n_victims > 1300, lab, \"\")) %>% # don't show a label when blocks are small\n  mutate(lab_col = ifelse(n_victims > 40000, \"#2b2b2b\", \"#cccccc\")) -> vdf # change up colors when blocks are lighter\n\ng <- graph_from_data_frame(gdf, vertices=vdf)\n\nggraph(g, \"treemap\", weight=n_victims) +\n  geom_node_tile(aes(fill=n_victims), size=0.25) +\n  geom_text(\n    aes(x, y, label=lab, size=n_victims, color = I(lab_col)),\n    family=font_ps, lineheight=0.875\n  ) +\n  scale_x_reverse(expand=c(0,0)) +\n  scale_y_continuous(expand=c(0,0)) +\n  scale_size_continuous(trans = \"sqrt\", range = c(0.5, 8)) +\n  labs(title = \"FBI 2017 Internet Crime Report \u2014 Crimes By Victim Count\") +\n  ggraph::theme_graph(base_family = font_ps) +\n  theme(plot.title = element_text(color=\"#cccccc\", family = \"IBMPlexSans-Bold\")) +\n  theme(panel.background = element_rect(fill=\"black\")) +\n  theme(plot.background = element_rect(fill=\"black\")) +\n  theme(legend.position=\"none\")\n<\/code>\n<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10261\" data-permalink=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/ic3_victim_treemap-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&amp;ssl=1\" data-orig-size=\"2688,1728\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ic3_victim_treemap-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=510%2C328&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?resize=510%2C328&#038;ssl=1\" alt=\"\" width=\"510\" height=\"328\" class=\"aligncenter size-full wp-image-10261\" \/><\/a><\/p>\n<pre>\n<code class=\"language-r\">\n# Now, do the same for losses:\n\nic3_2017_crimes_cost %>%\n  mutate(crime = case_when(\n    crime == \"Phishing\/Vishing\/Smishing\/Pharming\" ~ \"Phishing\/Vishing\/\\nSmishing\/Pharming\",\n    crime == \"Harassment\/Threats of Violence\" ~ \"Harassment\/\\nThreats of Violence\",\n    crime == \"Lottery\/Sweepstakes\" ~ \"Lottery\\nSweepstakes\",\n    TRUE ~ crime\n  )) %>%\n  filter(cost > 0) %>%\n  mutate(cost = cost \/ 1000000) %>%\n  mutate(grp = \"ROOT\") %>%\n  add_row(grp = \"ROOT\", crime=\"ROOT\", cost=0) %>%\n  select(grp, crime, cost) %>%\n  arrange(desc(cost)) -> gdf_cost\n\nselect(gdf_cost, -grp) %>%\n  mutate(lab = sprintf(\"%s\\n($%s M)\", crime, prettyNum(cost, digits=2))) %>%\n  mutate(lab = ifelse(cost > 5.6, lab, \"\")) %>%\n  mutate(lab_col = ifelse(cost > 600, \"#2b2b2b\", \"#cccccc\")) -> vdf_cost\n\ng_cost <- graph_from_data_frame(gdf_cost, vertices=vdf_cost)\n\nggraph(g_cost, \"treemap\", weight=cost) +\n  geom_node_tile(aes(fill=cost), size=0.25) +\n  geom_text(\n    aes(x, y, label=lab, size=cost, color=I(lab_col)),\n    family=font_ps, lineheight=0.875\n  ) +\n  scale_x_reverse(expand=c(0,0)) +\n  scale_y_continuous(expand=c(0,0)) +\n  scale_size_continuous(trans = \"sqrt\", range = c(0.5, 8)) +\n  labs(title = \"FBI 2017 Internet Crime Report \u2014 Crime Loss By Category\") +\n  ggraph::theme_graph(base_family = font_ps) +\n  theme(plot.title = element_text(color=\"#cccccc\", family = \"IBMPlexSans-Bold\")) +\n  theme(panel.background = element_rect(fill=\"black\")) +\n  theme(plot.background = element_rect(fill=\"black\")) +\n  theme(legend.position=\"none\")\n<\/code>\n<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_crimes_loss-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10277\" data-permalink=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/ic3_crimes_loss-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_crimes_loss-1.png?fit=2688%2C1728&amp;ssl=1\" data-orig-size=\"2688,1728\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ic3_crimes_loss-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_crimes_loss-1.png?fit=510%2C328&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_crimes_loss-1.png?resize=510%2C328&#038;ssl=1\" alt=\"\" width=\"510\" height=\"328\" class=\"aligncenter size-full wp-image-10277\" \/><\/a><\/p>\n<p>Let's plot victim counts vs losses to see what stands out:<\/p>\n<pre>\n<code class=\"language-r\">\nleft_join(ic3_2017_crimes_victim_ct, ic3_2017_crimes_cost) %>%\n  filter(!is.na(cost)) %>%\n  ggplot(aes(n_victims, cost)) +\n  geom_point() +\n  ggrepel::geom_label_repel(aes(label = crime), family=font_ps, size=3) +\n  scale_x_comma() +\n  scale_y_continuous(labels=scales::dollar) +\n  labs(\n    x = \"# of Victims\", y = \"Loss magnitude\",\n    title = \"FBI 2017 Internet Crime Report \u2014 Crime Loss By Victim Count ~ Category\"\n  ) +\n  theme_ipsum_ps(grid=\"XY\")\n<\/code>\n<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_1-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10262\" data-permalink=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/ic3_victim_loss_1-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_1-1.png?fit=1920%2C1152&amp;ssl=1\" data-orig-size=\"1920,1152\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ic3_victim_loss_1-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_1-1.png?fit=510%2C306&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_1-1.png?resize=510%2C306&#038;ssl=1\" alt=\"\" width=\"510\" height=\"306\" class=\"aligncenter size-full wp-image-10262\" \/><\/a><\/p>\n<p>BEC == \"<a href=\"https:\/\/www.fbi.gov\/news\/stories\/business-e-mail-compromise-on-the-rise\">Business email compromise<\/a>\" and it's definitely a major problem, but those two count\/loss outliers are not helping us see the rest of the data. Let's zoom in:<\/p>\n<pre>\n<code class=\"language-r\">\nleft_join(ic3_2017_crimes_victim_ct, ic3_2017_crimes_cost) %>%\n  filter(!is.na(cost)) %>%\n  filter(cost < 300000000) %>%\n  filter(n_victims < 40000) %>%\n  ggplot(aes(n_victims, cost)) +\n  geom_point() +\n  ggrepel::geom_label_repel(aes(label = crime), family=font_ps, size=3) +\n  scale_x_comma() +\n  scale_y_continuous(labels=scales::dollar) +\n  labs(\n    x = \"# of Victims\", y = \"Loss magnitude\",\n    title = \"FBI 2017 Internet Crime Report \u2014 Crime Loss By Victim Count ~ Category\",\n    subtitle = \"NOTE: BEC\/EAC and Non-payment\/Non-delivery removed\"\n  ) +\n  theme_ipsum_ps(grid=\"XY\")\n<\/code>\n<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_2-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10263\" data-permalink=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/ic3_victim_loss_2-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_2-1.png?fit=1920%2C1152&amp;ssl=1\" data-orig-size=\"1920,1152\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ic3_victim_loss_2-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_2-1.png?fit=510%2C306&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_2-1.png?resize=510%2C306&#038;ssl=1\" alt=\"\" width=\"510\" height=\"306\" class=\"aligncenter size-full wp-image-10263\" \/><\/a><\/p>\n<p>Better, but let's go zoom in a bit more:<\/p>\n<pre>\n<code class=\"language-r\">\nleft_join(ic3_2017_crimes_victim_ct, ic3_2017_crimes_cost) %>%\n  filter(!is.na(cost)) %>%\n  filter(cost < 50000000) %>%\n  filter(n_victims < 10000) %>%\n  ggplot(aes(n_victims, cost)) +\n  geom_point() +\n  ggrepel::geom_label_repel(aes(label = crime), family=font_ps, size=3) +\n  scale_x_comma() +\n  scale_y_continuous(labels=scales::dollar) +\n  labs(\n    x = \"# of Victims\", y = \"Loss magnitude\",\n    title = \"FBI 2017 Internet Crime Report \u2014 Crime Loss By Victim Count ~ Category\",\n    subtitle = \"NOTE: Only includes losses between $0-50 M USD & victim counts <= 10,000 \"\n  ) +\n  theme_ipsum_ps(grid=\"XY\")\n<\/code>\n<\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_3-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"10264\" data-permalink=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/ic3_victim_loss_3-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_3-1.png?fit=1920%2C1152&amp;ssl=1\" data-orig-size=\"1920,1152\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ic3_victim_loss_3-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_3-1.png?fit=510%2C306&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_loss_3-1.png?resize=510%2C306&#038;ssl=1\" alt=\"\" width=\"510\" height=\"306\" class=\"aligncenter size-full wp-image-10264\" \/><\/a><\/p>\n<p>Looks like the ransomware folks have quite a bit of catching up to do (at least when it comes to crimes reported to the IC3).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The U.S. FBI Internet Crime Complaint Center was established in 2000 to receive complaints of Internet crime. They produce an annual report, just released 2017&#8217;s edition, and I need the data from it. Since I have to wrangle it out, I thought some folks might like to play long at home, especially since it turns [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":10261,"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-10257","post","type-post","status-publish","format-standard","has-post-thumbnail","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>Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report - 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\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report - rud.is\" \/>\n<meta property=\"og:description\" content=\"The U.S. FBI Internet Crime Complaint Center was established in 2000 to receive complaints of Internet crime. They produce an annual report, just released 2017&#8217;s edition, and I need the data from it. Since I have to wrangle it out, I thought some folks might like to play long at home, especially since it turns [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-08T14:10:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-05-08T15:28:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"2688\" \/>\n\t<meta property=\"og:image:height\" content=\"1728\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report\",\"datePublished\":\"2018-05-08T14:10:02+00:00\",\"dateModified\":\"2018-05-08T15:28:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/\"},\"wordCount\":432,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1\",\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/\",\"name\":\"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1\",\"datePublished\":\"2018-05-08T14:10:02+00:00\",\"dateModified\":\"2018-05-08T15:28:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1\",\"width\":\"2688\",\"height\":\"1728\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2018\\\/05\\\/08\\\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report\"}]},{\"@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":"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report - 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\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/","og_locale":"en_US","og_type":"article","og_title":"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report - rud.is","og_description":"The U.S. FBI Internet Crime Complaint Center was established in 2000 to receive complaints of Internet crime. They produce an annual report, just released 2017&#8217;s edition, and I need the data from it. Since I have to wrangle it out, I thought some folks might like to play long at home, especially since it turns [&hellip;]","og_url":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/","og_site_name":"rud.is","article_published_time":"2018-05-08T14:10:02+00:00","article_modified_time":"2018-05-08T15:28:25+00:00","og_image":[{"width":2688,"height":1728,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1","type":"image\/png"}],"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\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report","datePublished":"2018-05-08T14:10:02+00:00","dateModified":"2018-05-08T15:28:25+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/"},"wordCount":432,"commentCount":1,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1","articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/","url":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/","name":"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1","datePublished":"2018-05-08T14:10:02+00:00","dateModified":"2018-05-08T15:28:25+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1","width":"2688","height":"1728"},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2018\/05\/08\/wrangling-data-table-out-of-the-fbi-2017-ic3-crime-report\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Wrangling Data Table Out Of the FBI 2017 IC3 Crime Report"}]},{"@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":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/05\/ic3_victim_treemap-1.png?fit=2688%2C1728&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-2Fr","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3094,"url":"https:\/\/rud.is\/b\/2014\/10\/13\/spending-seized-assets-a-state-by-state-per-capita-comparison-in-r\/","url_meta":{"origin":10257,"position":0},"title":"Spending Seized Assets &#8211; A State-by-State Per-capita Comparison in R","author":"hrbrmstr","date":"2014-10-13","format":false,"excerpt":"The Washingon Post did another great story+vis, this time on states [Spending seized assets](http:\/\/www.washingtonpost.com\/wp-srv\/special\/investigative\/asset-seizures\/). According to their sub-head: >_Since 2008, about 5,400 police agencies have spent $2.5 billion in proceeds from cash and property seized under federal civil forfeiture laws. Police suspected the assets were linked to crime, although in\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3775,"url":"https:\/\/rud.is\/b\/2015\/11\/08\/visualizing_survey_data\/","url_meta":{"origin":10257,"position":1},"title":"Visualizing Survey Data : Comparison Between Observations","author":"hrbrmstr","date":"2015-11-08","format":false,"excerpt":"Cybersecurity is a domain that really likes surveys, or at the very least it has many folks within it that like to conduct and report on surveys. One recent survey on threat intelligence is in it's second year, so it sets about comparing answers across years. Rather than go into\u2026","rel":"","context":"In &quot;Cybersecurity&quot;","block_context":{"text":"Cybersecurity","link":"https:\/\/rud.is\/b\/category\/cybersecurity\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/Visualizing_Survey_Data___Comparison_Between_Observations.png?fit=1200%2C721&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/Visualizing_Survey_Data___Comparison_Between_Observations.png?fit=1200%2C721&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/Visualizing_Survey_Data___Comparison_Between_Observations.png?fit=1200%2C721&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/Visualizing_Survey_Data___Comparison_Between_Observations.png?fit=1200%2C721&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2015\/11\/Visualizing_Survey_Data___Comparison_Between_Observations.png?fit=1200%2C721&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2793,"url":"https:\/\/rud.is\/b\/2013\/11\/27\/mapping-power-outages-in-maine-with-r\/","url_meta":{"origin":10257,"position":2},"title":"Mapping Power Outages In Maine With R","author":"hrbrmstr","date":"2013-11-27","format":false,"excerpt":"UPDATE: A Shiny (dynamic) version of this is now available. We had yet-another power outage this morning due to the weird weather patterns of the week and it was the final catalyst I needed to crank out some R code to map the affected counties. Central Maine Power provides an\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Plot_Zoom.png?fit=530%2C680&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Plot_Zoom.png?fit=530%2C680&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Plot_Zoom.png?fit=530%2C680&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3649,"url":"https:\/\/rud.is\/b\/2015\/08\/27\/coloring-and-drawing-outside-the-lines-in-ggplot\/","url_meta":{"origin":10257,"position":3},"title":"Coloring (and Drawing) Outside the Lines in ggplot","author":"hrbrmstr","date":"2015-08-27","format":false,"excerpt":"Time for another Twitter-inspired blog post this week, this time from a tweet by @JonKalodimos: Is there a way to do this in #rstats #ggplot2 https:\/\/t.co\/kxWQFlYpbB\u2014 Jonathan Kalodimos (@JonKalodimos) August 27, 2015 I had seen and appreciated Ann's post on her makeover of the main graphic in [NPR's story](http:\/\/www.npr.org\/sections\/money\/2014\/10\/21\/357629765\/when-women-stopped-coding) and\u2026","rel":"","context":"In &quot;Data Visualization&quot;","block_context":{"text":"Data Visualization","link":"https:\/\/rud.is\/b\/category\/data-visualization\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4225,"url":"https:\/\/rud.is\/b\/2016\/03\/30\/introducing-a-weekly-r-python-js-etc-vis-challenge\/","url_meta":{"origin":10257,"position":4},"title":"Introducing a Weekly R \/ Python \/ JS \/ etc Vis Challenge!","author":"hrbrmstr","date":"2016-03-30","format":false,"excerpt":">UPDATE: Deadline is now 2016-04-05 23:59 EDT; next vis challenge is 2016-04-06! Per a suggestion, I'm going to try to find a neat data set (prbly one from @jsvine) to feature each week and toss up some sample code (99% of the time prbly in R) and offer up a\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/RStudioScreenSnapz024.png?fit=1200%2C605&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/RStudioScreenSnapz024.png?fit=1200%2C605&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/RStudioScreenSnapz024.png?fit=1200%2C605&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/RStudioScreenSnapz024.png?fit=1200%2C605&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/RStudioScreenSnapz024.png?fit=1200%2C605&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3028,"url":"https:\/\/rud.is\/b\/2014\/09\/20\/chartingmapping-the-scottish-vote-with-r-rvestdplyrtidyrtopojsonggplot\/","url_meta":{"origin":10257,"position":5},"title":"Charting\/Mapping the Scottish Vote with R (an rvest\/dplyr\/tidyr\/TopoJSON\/ggplot tutorial)","author":"hrbrmstr","date":"2014-09-20","format":false,"excerpt":"The BBC did a pretty good job [live tracking the Scotland secession vote](http:\/\/www.bbc.com\/news\/events\/scotland-decides\/results), but I really didn't like the color scheme they chose and decided to use the final tally site as the basis for another tutorial using the tools from the Hadleyverse and taking advantage of the fact that\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"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\/10257","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=10257"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/10257\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/10261"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=10257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=10257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=10257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}