{"id":2852,"date":"2015-07-15T11:09:24","date_gmt":"2015-07-15T16:09:24","guid":{"rendered":"http:\/\/blogs.terrorware.com\/geoff\/?p=2852"},"modified":"2015-07-15T11:11:13","modified_gmt":"2015-07-15T16:11:13","slug":"programmatically-reshaping-data","status":"publish","type":"post","link":"http:\/\/blogs.terrorware.com\/geoff\/2015\/07\/15\/programmatically-reshaping-data\/","title":{"rendered":"Programmatically reshaping data"},"content":{"rendered":"<p>Yesterday at work, my coworker needed to reshape a data table, from CSV.  The data was a time series, with one row per date.  He wanted to reshape the data so there was one row per day of the year with a column for the desired variable for each year.  He observed that there were 93 distinct days of the year for each year and used some clever Excel functions and auto-fills to do this in about 5 minutes.  I spend considerably more time figuring out how to do this in PostgreSQL, Python and R.<\/p>\n<div class=\"oembed-gist\"><script src=\"https:\/\/gist.github.com\/ghing\/42ff059e9f9bd9fdcaf0.js\"><\/script><noscript>View the code on <a href=\"https:\/\/gist.github.com\/ghing\/42ff059e9f9bd9fdcaf0\">Gist<\/a>.<\/noscript><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday at work, my coworker needed to reshape a data table, from CSV. The data was a time series, with one row per date. He wanted to reshape the data so there was one row per day of the year with a column for the desired variable for each year. He observed that there were&hellip; <a class=\"more-link\" href=\"http:\/\/blogs.terrorware.com\/geoff\/2015\/07\/15\/programmatically-reshaping-data\/\">Continue reading <span class=\"screen-reader-text\">Programmatically reshaping data<\/span><\/a><\/p>\n","protected":false},"author":3,"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,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-2852","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4wnIz-K0","_links":{"self":[{"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/posts\/2852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/comments?post=2852"}],"version-history":[{"count":4,"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/posts\/2852\/revisions"}],"predecessor-version":[{"id":2856,"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/posts\/2852\/revisions\/2856"}],"wp:attachment":[{"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/media?parent=2852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/categories?post=2852"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blogs.terrorware.com\/geoff\/wp-json\/wp\/v2\/tags?post=2852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}