{"id":4242,"date":"2026-02-22T18:11:28","date_gmt":"2026-02-22T16:11:28","guid":{"rendered":"https:\/\/webanalyst.ro\/?p=4242"},"modified":"2026-02-22T18:11:29","modified_gmt":"2026-02-22T16:11:29","slug":"dplyr-1-2-0","status":"publish","type":"post","link":"https:\/\/webanalyst.ro\/blog\/2026\/dplyr-1-2-0\/","title":{"rendered":"dplyr 1.2.0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>dplyr<\/strong> este unul dintre cele mai populare pachete din limbajul de programare <strong>R<\/strong>, fiind considerat \u201ecu\u021bitul elve\u021bian\u201d pentru manipularea \u0219i transformarea datelor. Acesta face parte din ecosistemul <strong>tidyverse<\/strong> \u0219i a fost creat special pentru a face procesul de cur\u0103\u021bare \u0219i explorare a datelor mai rapid, mai intuitiv \u0219i mai u\u0219or de citit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luna aceasta a apr\u0103rut o nou\u0103 versiune major\u0103 de dplyr. Versiunea 1.2.0 se concentreaz\u0103 pe o vitez\u0103 ridicat\u0103, precum \u0219i pe simplificarea sintaxei \u0219i eliminarea pa\u0219ilor redundan\u021bi.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Despre universul <strong>tidyverse<\/strong> am scris \u0219i \u00een trecut, \u00een special despre <a href=\"https:\/\/webanalyst.ro\/blog\/tag\/ggplot2\/\" target=\"_blank\" rel=\"noreferrer noopener\">ggplot2<\/a>, pachetul pentru <strong>gramatica graficelor<\/strong>. \u00cen schimb, <strong>dplyr<\/strong> este pachetul care se ocup\u0103 de <strong>gramatica manipul\u0103rii datelor<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Scurt istoric<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>dplyr<\/strong> a ap\u0103rut \u00een ianuarie 2014, fiind conceput ca un succesor mai rapid \u0219i mai coerent pentru pachetul <strong>plyr<\/strong>. Pentru a lucra eficient cu datele, <strong>dplyr<\/strong> se bazeaz\u0103 pe c\u00e2teva func\u021bii cheie care acoper\u0103 majoritatea nevoilor de procesare:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>filter()<\/code> &#8211; selecteaz\u0103 r\u00e2nduri pe baza unor condi\u021bii<\/li>\n\n\n\n<li><code>select()<\/code> &#8211; selecteaz\u0103 coloane specifice<\/li>\n\n\n\n<li><code>mutate()<\/code> &#8211; creeaz\u0103 coloane noi sau le modific\u0103 pe cele existente<\/li>\n\n\n\n<li><code>arrange()<\/code> &#8211; sorteaz\u0103 r\u00e2ndurile<\/li>\n\n\n\n<li><code>summarize()<\/code> &#8211; ofer\u0103 un r\u00e2nd de statistici privind tabelul<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u00centre 2015 \u0219i 2019, acest pachet devine parte central\u0103 din <strong>tidyverse<\/strong> \u0219i este adoptat\u0103 complet filozofia <em>tidy data<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cen 2020 a ap\u0103rut <strong>dplyr 1.0.0<\/strong>. Se spune c\u0103 este versiunea care marcheaz\u0103 trecerea la \u201edplyr modern\u201d, \u0219i vine cu func\u021bii precum:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>across()<\/code> &#8211; transform\u0103 mai multe coloane de-odat\u0103, f\u0103r\u0103 a repeta codul<\/li>\n\n\n\n<li><code>if_any()<\/code> \u0219i <code>if_all()<\/code> &#8211; scaneaz\u0103 r\u00e2ndurile pentru a vedea unde este \u00eendeplinit\u0103 regula<\/li>\n\n\n\n<li><code>rowwise()<\/code> este modernizat; dac\u0103 R face calcule pe coloan\u0103, aceast func\u021bie \u00eel face s\u0103 priveasc\u0103 tabelul r\u00e2nd cu r\u00e2nd<\/li>\n\n\n\n<li><code>summarize()<\/code> devine mai flexibil \u0219i poate oferi mai mult dec\u00e2t o valoare pentru fiecare grup<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cen 2022 a ap\u0103rut <strong>dplyr 1.1.0<\/strong>, care a adus prima dat\u0103 argumentul <code>.by()<\/code>, acesta grup\u00e2nd temporar datele, precum \u0219i <code>reframe()<\/code>, care a preluat de la <code>summarize()<\/code> rezultatele care \u00eenseamn\u0103 mai mult de un r\u00e2nd per grup.<br>At\u00e2t argumentul <code>.by()<\/code>, c\u00e2t \u0219i func\u021bia <code>reframe()<\/code> au devenit stabile \u00een versiunea lansat\u0103 \u00een februarie 2026.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Extinderea familiei <code>filter()<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cenapoi la versiunea 1.2.0, avem mari schimb\u0103ri la nivelul filtr\u0103rii datelor. A\u0219a cum scriam mai sus, <code>filter()<\/code> este una dintre principalele func\u021bii ale <strong>dplyr<\/strong>. Este optimizat\u0103 pentru p\u0103strarea sau includerea datelor, \u00eens\u0103 era folosit\u0103 deseori \u0219i pentru excluderea de date.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cen acest sens, noua versiune aduce o nou\u0103 func\u021bie, <code>filter_out()<\/code>, care va face excluderea mai rapid\u0103.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A\u0219a cum spuneam, argumentul <code>.by<\/code> a devenit stabil, astfel c\u0103 acum putem vedea datele grupate chiar din <code>filter()<\/code>, \u00eempreun\u0103 cu acest argument. Spre compara\u021bie, \u00eenainte de acest argument, trebuia s\u0103 grup\u0103m datele, s\u0103 le filtr\u0103m, dup\u0103 care s\u0103 le degrup\u0103m.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Combina\u021bii cu <code>when_any()<\/code> \u0219i <code>when_all()<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Acestea sunt func\u021bii ajut\u0103toare (<em>helpers<\/em>) menite s\u0103 simplifice <strong>logica boolean\u0103<\/strong> (\u0218I \/ SAU) atunci c\u00e2nd ai multe condi\u021bii.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Condi\u021biile vor fi introduse ca argumente ale acestor func\u021bii, cu virgul\u0103 \u00eentre acestea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Acesea sunt func\u021bii asem\u0103n\u0103toare cu <code>if_any()<\/code> \/ <code>if_all()<\/code>, care se folosesc la opera\u021biuni pe coloane, \u00een timp ce <strong><code>when_any()<\/code> \/ <code>when_all()<\/code><\/strong> se folosesc pentru a combina <strong>expresii logice diferite<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aceste func\u0219ii ajut\u0103toare vin ca un ajutor la <code>filter_out()<\/code>, pentru c\u0103 le putem utiliza \u00eempreun\u0103.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crearea de noi coloane<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cenc\u0103 din versiunea 0.5.0 avem la dispozi\u021bie <code>case_when()<\/code>, care salveaz\u0103 utilizatorii de \u0219irurile de <code>ifelse()<\/code>. \u00cen ultima versiune, aceasta a fost rescris\u0103 aproape integral \u00een C++, f\u00e2c\u00e2nd execu\u021bia cu p\u00e2n\u0103 la 40% mai rapid\u0103 fa\u021b\u0103 de versiunea 1.1.0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tot \u00een ultima versiune, fun\u021bia <code>case_when()<\/code> a fost completat\u0103 cu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>recode_values()<\/code> &#8211; creeaz\u0103 coloane prin \u00eenlocuiri simple, de tipul \u201echeie-valoare\u201d<\/li>\n\n\n\n<li><code>replaces_when()<\/code> &#8211; nu creeaz\u0103 coloane noi, dar poate \u00eenlocui anumite valori; p\u0103streaz\u0103 valorile originale \u0219i le schimb\u0103 doar pe cele care \u00eendeplinesc condi\u021bia, fiind mult mai eficient din punct de vedere al memoriei<\/li>\n\n\n\n<li><code>replace_values()<\/code> &#8211; pentru pentru a \u00eenlocui valori, dar f\u0103r\u0103 s\u0103 mai punem condi\u021bii multiple \u00een <code>case_when()<\/code><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-medium is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"84\" src=\"https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2026\/02\/recoding-dplyr-300x84.png\" alt=\"\" class=\"wp-image-4246\" style=\"object-fit:cover;width:500px;height:150px\" srcset=\"https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2026\/02\/recoding-dplyr-300x84.png 300w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2026\/02\/recoding-dplyr-150x42.png 150w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2026\/02\/recoding-dplyr-768x215.png 768w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2026\/02\/recoding-dplyr.png 1106w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A\u0219a cum se poate observa, lucrul cu date \u00een <strong>dplyr<\/strong> devine mai simplu odat\u0103 cu ultima versiune. M\u0103 bucur s\u0103 v\u0103d c\u0103 exist\u0103 preocupare \u0219i principalele pachete pentru date din R sunt actualizate constant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>dplyr este unul dintre cele mai populare pachete din limbajul de programare R, fiind considerat \u201ecu\u021bitul elve\u021bian\u201d pentru manipularea \u0219i transformarea datelor. Acesta face parte din ecosistemul tidyverse \u0219i a fost creat special pentru a face procesul de cur\u0103\u021bare \u0219i explorare a datelor mai rapid, mai intuitiv \u0219i mai u\u0219or de citit. Luna aceasta a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4244,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[843],"class_list":["post-4242","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical","tag-r"],"_links":{"self":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/4242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/comments?post=4242"}],"version-history":[{"count":5,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/4242\/revisions"}],"predecessor-version":[{"id":4249,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/4242\/revisions\/4249"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/media\/4244"}],"wp:attachment":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/media?parent=4242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/categories?post=4242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/tags?post=4242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}