{"id":4716,"date":"2019-01-30T01:32:34","date_gmt":"2019-01-30T00:32:34","guid":{"rendered":"https:\/\/thinkr.fr\/abcdr\/comment-calculer-le-nombre-de-donnees-manquantes-par-lignes\/"},"modified":"2020-05-31T20:04:00","modified_gmt":"2020-05-31T19:04:00","slug":"comment-calculer-le-nombre-de-donnees-manquantes-par-lignes","status":"publish","type":"post","link":"https:\/\/thinkr.fr\/abcdr\/comment-calculer-le-nombre-de-donnees-manquantes-par-lignes\/","title":{"rendered":"Comment calculer le nombre de donn\u00e9es manquantes par lignes"},"content":{"rendered":"<p>Plusieurs fa\u00e7on de faire, \u00e0 vous de choisir celle qui vous plait le plus \ud83d\ude42<\/p>\n<p>Fabriquons un petit jeu de donn\u00e9es auquel nous souhaitons ajouter une colonne contenant le nombre ne <code>NA<\/code> sur chacune des lignes.<\/p>\n<pre><code class=\"language-r\">library(tidyverse)\ndataset &lt;- tribble(~a,~b,~c,\n        1,NA,NA,\n        NA,NA,NA,\n        1,2,3,\n        NA,3,NA\n)\n<\/code><\/pre>\n<p><em>A l&rsquo;ancienne<\/em><\/p>\n<pre><code class=\"language-r\">dataset$nb &lt;- apply(dataset, MARGIN = 1, function(x){sum(is.na(x))})\n<\/code><\/pre>\n<p><em>avec du <code>pmap<\/code> et du <code>mutate<\/code><\/em><\/p>\n<pre><code class=\"language-r\">dataset %&gt;% mutate(nb = pmap(.,function(a,b,c){sum(is.na(a),is.na(b),is.na(c))}),\n             nb= unlist(nb))\n<\/code><\/pre>\n<blockquote><p>\n  Mais c&rsquo;est dommage de devoir sp\u00e9cifier a, b et c.<\/p>\n<p>  donc simplifions :\n<\/p><\/blockquote>\n<pre><code class=\"language-r\">dataset %&gt;% \n  mutate(nb = pmap_dbl(., function(...){sum(is.na(c(...)))}))\n<\/code><\/pre>\n<blockquote><p>\n  Cela reste \u00e0 mon go\u00fbt un peu trop verbeux\n<\/p><\/blockquote>\n<p><em>Avec <code>rowSums<\/code><\/em><\/p>\n<pre><code class=\"language-r\">dataset %&gt;% mutate(nb = rowSums(is.na(.)))\n<\/code><\/pre>\n<blockquote><p>\n  \u00e7a c&rsquo;est propre et efficace\n<\/p><\/blockquote>\n<p><em>En utilisant le package {naniar} (coucou @colin ) (qui habille <code>rowSums<\/code>)<\/em><\/p>\n<pre><code class=\"language-r\">dataset %&gt;% naniar::add_n_miss()\n<\/code><\/pre>\n<p>En esp\u00e9rant que cela vous soit utile.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Plusieurs fa\u00e7on de faire, \u00e0 vous de choisir celle qui vous plait le plus \ud83d\ude42 Fabriquons un petit jeu de donn\u00e9es auquel nous souhaitons ajouter une colonne contenant le nombre ne NA sur chacune des lignes. library(tidyverse) dataset &lt;- tribble(~a,~b,~c, 1,NA,NA, NA,NA,NA, 1,2,3, NA,3,NA ) A l&rsquo;ancienne dataset$nb &lt;- apply(dataset, MARGIN = 1, function(x){sum(is.na(x))}) avec du pmap et du mutate dataset %&gt;% mutate(nb = pmap(.,function(a,b,c){sum(is.na(a),is.na(b),is.na(c))}), nb= unlist(nb)) Mais c&rsquo;est dommage de devoir sp\u00e9cifier a, b et c. donc simplifions : dataset %&gt;% mutate(nb = pmap_dbl(., function(&#8230;){sum(is.na(c(&#8230;)))})) Cela reste \u00e0 mon go\u00fbt un peu trop verbeux Avec rowSums dataset %&gt;% mutate(nb = rowSums(is.na(.))) \u00e7a c&rsquo;est propre<a class=\"more-link\" href=\"https:\/\/thinkr.fr\/abcdr\/comment-calculer-le-nombre-de-donnees-manquantes-par-lignes\/\">Read More &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":{"twitter_399453572_399453572":""},"rop_publish_now_history":[],"rop_publish_now_status":"pending","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":""},"categories":[12,22],"tags":[36,37],"class_list":{"0":"entry","1":"post","2":"publish","3":"author-vincent","4":"post-4716","6":"format-standard","7":"category-manipulation-de-donnees","8":"category-tidyverse","9":"post_tag-na","10":"post_tag-nettoyage"},"acf":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p9O7Sx-1e4","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts\/4716","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/comments?post=4716"}],"version-history":[{"count":2,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts\/4716\/revisions"}],"predecessor-version":[{"id":4793,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/posts\/4716\/revisions\/4793"}],"wp:attachment":[{"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/media?parent=4716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/categories?post=4716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thinkr.fr\/abcdr\/wp-json\/wp\/v2\/tags?post=4716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}