<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Adatar</title>
<link>https://adatar.do/blog/Dmisc/index.html</link>
<atom:link href="https://adatar.do/blog/Dmisc/index.xml" rel="self" type="application/rss+xml"/>
<description>`Dmisc` es un paquete R en el que Daniel E. de la Rosa mantiene algunas funciones que le son útiles en su trabajo, y que también pudieran ser de utildiad a otros. En esta sección se presentan algunos tutoriales para utilizar algunas de estas funciones y otras informaciones relevantes al proyecto. Para una descripción más general del proyecto, véala en la seccion Proyectos de esta misma página web.</description>
<generator>quarto-1.3.361</generator>
<lastBuildDate>Wed, 21 Jun 2023 00:00:00 GMT</lastBuildDate>
<item>
  <title>Cut Cut Cut</title>
  <link>https://adatar.do/blog/Dmisc/cut3.html</link>
  <description><![CDATA[ 




<div class="cell">
<div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(Dmisc)</span>
<span id="cb1-2"></span>
<span id="cb1-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Datos sintéticos para los ejemplos.</span></span>
<span id="cb1-4"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">set.seed</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">123</span>)</span>
<span id="cb1-5">df <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(</span>
<span id="cb1-6">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">sex =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rep</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'M'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'F'</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">each =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500</span>),</span>
<span id="cb1-7">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">age =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sample</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500</span>, <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>), <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sample</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">70</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500</span>, <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>))</span>
<span id="cb1-8">)</span></code></pre></div>
</div>
<p>Al trabajar con datos, es frecuente encontrarse con la necesidad de analizar variables numéricas. En ciertos casos, resulta suficiente emplear medidas estadísticas básicas como la media, la suma, el valor mínimo y máximo, y otras similares, especialmente cuando se desea examinar la relación de estas variables con variables categóricas.</p>
<p>En la situación en la que se requiera comparar dos variables numéricas, podemos recurrir a métricas como la correlación, la regresión, la covarianza, entre otras, para establecer una relación entre ambas. Sin embargo, a menudo surge la necesidad de convertir estas variables numéricas en categóricas para capturar y resaltar las diferencias entre distintos grupos demográficos o poblacionales.</p>
<p>Para este propósito, el lenguaje de programación estadística <code>R</code> proporciona la función <code>cut</code>. Según su documentación, <code>cut</code> es una función diseñada para <em>convertir una variable numérica en un factor</em><sup>1</sup>.</p>
<p>Además, existen bibliotecas de terceros que expanden las capacidades de la función <code>cut</code>, añadiendo más funcionalidades. Un ejemplo de esto es la función <code>cut3</code> del paquete <code>Dmisc</code>. A continuación, examinaremos cómo funcionan estas funciones y compararemos la utilidad y efectividad de <code>cut3</code> con otras alternativas disponibles.</p>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Nota
</div>
</div>
<div class="callout-body-container callout-body">
<p>La primera y fundamental diferencia de <code>cut3</code>, con el resto de las funciones diseñadas para estos fines, radica en que la primera es una función diseñada para trabajar sobre un data.frame, mientras que las otras están diseñadas para trabajar con el vector numérico de interés.</p>
<p>En términos de ventajas, esto puede significar una mayor flexibilidad y eficiencia en algunos casos. En lugar de tener que aislar un vector numérico y trabajar con él individualmente, <code>cut3</code> permite al usuario operar directamente en el data.frame completo. Esto puede ser particularmente útil en situaciones donde se necesita manipular o analizar múltiples columnas simultáneamente, <em>como se verá más adelante</em>.</p>
<p>Sin embargo, esta funcionalidad también presenta algunas desventajas. La principal es que <code>cut3</code> sobrescribe la variable en cuestión dentro del data.frame, y no es intuitiva la forma de asignarla en una nueva variable.<sup>2</sup></p>
</div>
</div>
<section id="cortes" class="level2">
<h2 class="anchored" data-anchor-id="cortes">Cortes</h2>
<p>El más importante argumento de estas funciones, después de los datos, es <code>breaks</code>. Este argumento consiste en una indicación de como se construyen los intervalos en la variable categórica resultante.</p>
<section id="un-único-número" class="level3">
<h3 class="anchored" data-anchor-id="un-único-número">Un único número</h3>
<p>Cuando el argumento <code>breaks</code> consiste de un único número (entero y mayor o igual a 2)<sup>3</sup>. Este se interpreta como el número de cortes que se deben realizar en la variable numérica cuando se convierte en categórica.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1">df2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> df</span>
<span id="cb2-2">df2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>age <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut</span>(df2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>age, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb2-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(df2)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (19.9,32.5] (32.5,45] (45,57.5] (57.5,70]
  F          31       171       144       154
  M         155       159       150        36</code></pre>
</div>
</div>
<p>En este caso, salvo un leve diferencia en términos de la sintaxis. El mismo resultado se pudiera lograr utilizando <code>cut3</code>.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1">df3 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> Dmisc<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb4-2">  df, </span>
<span id="cb4-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'age'</span>, </span>
<span id="cb4-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span></span>
<span id="cb4-5">)</span>
<span id="cb4-6"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(df3)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (19.9,32.5] (32.5,45] (45,57.5] (57.5,70]
  F          31       171       144       154
  M         155       159       150        36</code></pre>
</div>
</div>
</section>
<section id="un-vector-numérico" class="level3">
<h3 class="anchored" data-anchor-id="un-vector-numérico">Un vector numérico</h3>
<p>Cuando el argumento <code>breaks</code> se pasa como un vector numérico, los valores contenidos en dicho vector se interpretan como los puntos de corte para la construcción de los intervalos en los que se va a dividir la variable en cuestión.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1">df2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> df</span>
<span id="cb6-2">df2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>age <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut</span>(</span>
<span id="cb6-3">  df2<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>age, </span>
<span id="cb6-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">80</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>)</span>
<span id="cb6-5">)</span>
<span id="cb6-6"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(df2)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (0,20] (20,40] (40,60] (60,80] (80,100]
  F      0     137     245     118        0
  M      5     235     260       0        0</code></pre>
</div>
</div>
<p>Nuevamente, lo mismo se puede conseguir utilizando la función <code>cut3()</code>.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1">df3 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> df</span>
<span id="cb8-2">df3 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb8-3">  df3, </span>
<span id="cb8-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb8-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">80</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>)</span>
<span id="cb8-6">)</span>
<span id="cb8-7"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(df3)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (0,20] (20,40] (40,60] (60,80] (80,100]
  F      0     137     245     118        0
  M      5     235     260       0        0</code></pre>
</div>
</div>
<p>Es importante destacar que este vector de valores debe contener un valor inicial <code>menor que</code> el <code>mínimo</code> de la variable y un último valor <code>mayor o igual</code> al <code>máximo</code> de la variable. Esto se debe a la forma en que se construyen los intervalos.</p>
<p>Observa en la etiqueta de la variable creada <code>(0,20]</code> que el límite inferior del intervalo está abierto <code>(</code>, lo que significa que solo se incluyen valores mayores que 0. Puedes cambiar este comportamiento y hacer que el primer rango sea cerrado utilizando el argumento <code>include.lowest</code>. Mientras que el límite superior está cerrado <code>]</code>, lo que significa que se incluyen valores menores o iguales a 20.</p>
<p>Si el vector de valores no cumple con los criterios descritos anteriormente, los valores que no encajen en ningún intervalo se marcarán como <code>NA</code> en la variable resultante. Además, en el caso de la función <code>cut3()</code>, si el usuario establece el argumento .inf en True, los puntos de corte proporcionados se extenderán con -Inf e Inf. Esto significa que cualquier valor se incluirá en la variable resultante, incluso si está fuera del rango de los valores originales. Es una característica útil cuando no se conoce de antemano el valor máximo y mínimo de la variable y se desea incluir todos los valores sin tener que establecer límites específicos.</p>
<div class="sourceCode" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb10-2">  df, </span>
<span id="cb10-3">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb10-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">80</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>)</span>
<span id="cb10-5">) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Dejará NAs</span></span>
<span id="cb10-6"></span>
<span id="cb10-7"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb10-8">  df, </span>
<span id="cb10-9">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb10-10">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">80</span>), </span>
<span id="cb10-11">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">include.lowest =</span> T</span>
<span id="cb10-12">) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Dejará NAs</span></span>
<span id="cb10-13"></span>
<span id="cb10-14"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb10-15">  df, </span>
<span id="cb10-16">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb10-17">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">60</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">80</span>), </span>
<span id="cb10-18">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">.inf =</span> F</span>
<span id="cb10-19">) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># No dejará NAs</span></span></code></pre></div>
<p>Finalmente, es esencial que los valores de dicho vector sean únicos. Esto es fundamentalmente relevante cuando los puntos de corte no se asignan manualmente, sino que se utiliza alguna otra estrategia para los fines.</p>
</section>
<section id="funciones" class="level3">
<h3 class="anchored" data-anchor-id="funciones">Funciones</h3>
<p>Una de las principales novedades de <code>cut3()</code> en comparación con <code>cut()</code> es que el vector de <code>breaks</code> puede ser una función que genera el vector numérico de los cortes. El caso de uso más común para esta funcionalidad es quizás cuando se quieren utilizar cuantiles para dividir la variable.</p>
<p>Para estos propósitos, se debe utilizar el argumento <code>bf_args</code> en el que se especifican argumentos adicionales, los cuales deben pasarse a la función utilizada para construir los puntos de ruptura.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb11-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(</span>
<span id="cb11-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb11-3">    df, </span>
<span id="cb11-4">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb11-5">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> quantile</span>
<span id="cb11-6">  )</span>
<span id="cb11-7">)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (20,36] (36,45] (45,55] (55,70]
  F      76     126     126     172
  M     195     114     128      58</code></pre>
</div>
</div>
<p>En el código de ejemplo anterior, la función <code>cut3()</code> se utiliza para dividir la variable “age” en el data.frame <code>df</code> en grupos o bins basados en cuantiles. Aquí, <code>breaks</code> se establece como <code>quantile</code>, lo que significa que los cuantiles de la distribución de “age” se utilizan para definir los puntos de ruptura.</p>
<p>Una característica interesante de este enfoque es que permite una mayor flexibilidad en la definición de los grupos. Por ejemplo, en lugar de dividir la variable en grupos de igual tamaño, puedes dividirla en grupos basados en la distribución de los datos. Esto puede ser particularmente útil cuando se trabaja con variables que tienen una distribución sesgada o que están altamente concentradas en ciertos rangos.</p>
<p>Además, al permitir que <code>breaks</code> sea una función, <code>cut3()</code> ofrece la posibilidad de generar puntos de ruptura de manera dinámica en función de los datos. Esto puede facilitar la creación de análisis más robustos y adaptables, ya que no es necesario definir los puntos de ruptura de antemano.</p>
<p>Por último, cabe mencionar que el argumento <code>bf_args</code> permite pasar argumentos adicionales a la función de <code>breaks</code>. Esto ofrece aún más flexibilidad, ya que puedes personalizar la función de <code>breaks</code> para adaptarse a tus necesidades específicas. Por ejemplo, podrías cambiar los cuantiles utilizados para dividir la variable, o podrías utilizar una función completamente diferente para generar los puntos de ruptura.</p>
<section id="dmisccut3_quantiles" class="level4">
<h4 class="anchored" data-anchor-id="dmisccut3_quantiles">Dmisc::cut3_quantiles</h4>
<p>El paquete Dmisc ya incluye la función <code>cut3_quantile</code>, que es una variante de cut3 diseñada específicamente para dividir una variable en cuantiles.</p>
<p>cut3_quantile toma un data.frame, una variable y un conjunto de probabilidades que definen los cuantiles. Si no se especifican las probabilidades, por defecto se utilizan el primer cuartil, la mediana y el tercer cuartil. Luego llama a cut3 con la función quantile de R como argumento para los puntos de ruptura.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb13" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb13-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(</span>
<span id="cb13-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3_quantile</span>(</span>
<span id="cb13-3">    df, </span>
<span id="cb13-4">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span></span>
<span id="cb13-5">  )</span>
<span id="cb13-6">)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (-Inf,36] (36,45] (45,55] (55, Inf]
  F        76     126     126       172
  M       200     114     128        58</code></pre>
</div>
</div>
<p>En el ejemplo de código anterior, cut3_quantile divide la variable “age” en el data.frame df en cuartiles.</p>
<p>Por lo tanto, si deseas dividir una variable en cuantiles, puedes utilizar directamente cut3_quantile en lugar de pasar quantile como argumento para breaks en cut3.</p>
</section>
</section>
</section>
<section id="grupos" class="level2">
<h2 class="anchored" data-anchor-id="grupos">Grupos</h2>
<p>Otra adición a <code>cut3()</code> consiste en poder definir diferentes cortes para diferentes grupos. Esto es especialmente útil cuando los puntos de ruptura se especifican con funciones.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb15" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb15-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(</span>
<span id="cb15-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb15-3">    df, </span>
<span id="cb15-4">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb15-5">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, </span>
<span id="cb15-6">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">.inf =</span> F</span>
<span id="cb15-7">  )</span>
<span id="cb15-8">)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (19.9,32.5] (32.5,45] (45,57.5] (57.5,70]
  F          31       171       144       154
  M         155       159       150        36</code></pre>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb17" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb17-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(</span>
<span id="cb17-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb17-3">    df, </span>
<span id="cb17-4">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb17-5">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, </span>
<span id="cb17-6">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">.inf =</span> F, </span>
<span id="cb17-7">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">groups =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sex"</span></span>
<span id="cb17-8">  )</span>
<span id="cb17-9">)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex (20,30] (30,40] (40,50] (50,60] (60,70]
  F       0     137     122     123     118
  M     134     106     141     119       0</code></pre>
</div>
</div>
<p>En el ejemplo de código anterior, <code>cut3()</code> se utiliza para dividir la variable “age” en el data.frame <code>tbl</code> en dos grupos, pero los cortes se definen de manera separada para cada valor de la variable “sex”. Esto significa que los grupos generados para “age” serán diferentes para hombres y mujeres, lo cual puede ser muy útil en análisis que requieran tener en cuenta las diferencias entre grupos.</p>
<p>Esta característica de <code>cut3()</code> es muy poderosa, ya que permite adaptar los puntos de ruptura a las características específicas de cada grupo. En muchos casos, la distribución de una variable puede variar significativamente entre diferentes grupos, y usar los mismos puntos de ruptura para todos los grupos podría resultar en una representación inexacta de los datos.</p>
<p>Por ejemplo, imagina que estás analizando la edad de los participantes en un estudio y descubres que la distribución de las edades es muy diferente para hombres y mujeres. Si utilizas los mismos puntos de ruptura para ambos grupos, podrías terminar con bins que contienen muchas mujeres pero pocos hombres, o viceversa. Al permitir definir los puntos de ruptura por separado para cada grupo, <code>cut3()</code> te permite evitar este problema y asegurar una representación más precisa de los datos para cada grupo.</p>
<p>Además, esta función es particularmente útil cuando los puntos de ruptura se especifican con funciones, ya que estas funciones pueden adaptarse a las características específicas de cada grupo. Por ejemplo, podrías utilizar cuantiles para definir los puntos de ruptura, lo que aseguraría que los bins contienen aproximadamente la misma proporción de observaciones para cada grupo, independientemente de las diferencias en las distribuciones de los datos.</p>
</section>
<section id="ponderadores" class="level2">
<h2 class="anchored" data-anchor-id="ponderadores">Ponderadores</h2>
<p>TODO</p>
</section>
<section id="etiquetas" class="level2">
<h2 class="anchored" data-anchor-id="etiquetas">Etiquetas</h2>
<p>Como quizás ya habrás notado en los ejemplos anteriores, las etiquetas de los datos de la variable resultante se construyen utilizando la notación de intervalo correspondiente. Sin embargo, este comportamiento puede ser modificado proporcionando el argumento <code>labels = F</code>. En este caso, se utilizará un número autoincremental simple para nombrar los intervalos.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb19" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb19-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(</span>
<span id="cb19-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb19-3">    df, </span>
<span id="cb19-4">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb19-5">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, </span>
<span id="cb19-6">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> F</span>
<span id="cb19-7">  )</span>
<span id="cb19-8">)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex   1   2   3   4
  F  31 171 144 154
  M 155 159 150  36</code></pre>
</div>
</div>
<p>Además, puedes proporcionar un vector especificando las etiquetas que quieres utilizar en la construcción de la variable. Las etiquetas se asignarán en el orden en que se especifican. Además, el número de etiquetas debe ser exactamente igual al número de bins resultantes.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb21" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb21-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">table</span>(</span>
<span id="cb21-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cut3</span>(</span>
<span id="cb21-3">    df, </span>
<span id="cb21-4">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">var_name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"age"</span>, </span>
<span id="cb21-5">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, </span>
<span id="cb21-6">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(</span>
<span id="cb21-7">      <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1 - 25 años"</span>, </span>
<span id="cb21-8">      <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"21 - 50 años"</span>, </span>
<span id="cb21-9">      <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"51 - 75 años"</span>, </span>
<span id="cb21-10">      <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"76 - 100 años"</span></span>
<span id="cb21-11">    )</span>
<span id="cb21-12">  )</span>
<span id="cb21-13">)</span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   age
sex 1 - 25 años 21 - 50 años 51 - 75 años 76 - 100 años
  F          31          171          144           154
  M         155          159          150            36</code></pre>
</div>
</div>
<p>Esto puede ser útil si deseas personalizar las etiquetas para hacerlas más descriptivas o más fáciles de entender. Por ejemplo, podrías usar etiquetas que describan las características de los individuos en cada grupo, o podrías usar etiquetas que sean más consistentes con la terminología utilizada en tu campo de estudio. Esto puede hacer que tus resultados sean más claros y más fáciles de interpretar, tanto para ti como para otras personas que puedan estar trabajando con tus datos.</p>
</section>
<section id="conclusión" class="level2">
<h2 class="anchored" data-anchor-id="conclusión">Conclusión</h2>
<p>La función cut3 del paquete Dmisc en R ofrece ventajas y desventajas. En comparación con funciones como cut, cut3 puede ofrecer mayor flexibilidad y eficiencia al trabajar directamente con data.frames en lugar de solo con vectores numéricos. Esto puede ser especialmente útil cuando se necesita manipular o analizar múltiples columnas a la vez.</p>
<p>Sin embargo, también presenta inconvenientes, como la sobrescritura de la variable original dentro del data.frame, y puede resultar menos intuitiva cuando se necesita asignar el resultado a una nueva variable. En términos de rendimiento, la elección entre cut y cut3 dependerá en gran medida del contexto y de las necesidades específicas de tu análisis.</p>
<p>Finalmente, siempre es recomendable entender las diferencias y peculiaridades de las distintas herramientas disponibles antes de tomar una decisión sobre qué método utilizar para convertir variables numéricas en categóricas.</p>
</section>
<section id="referencias" class="level1 unnumbered">
<h1 class="unnumbered">Referencias</h1>


</section>


<div id="quarto-appendix" class="default"><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Notas</h2>

<ol>
<li id="fn1"><p>En R, un factor es una variable de tipo categórica. Es similar a una variable de tipo texto (character), pero que solo toma un conjunto finito de valores (levels).↩︎</p></li>
<li id="fn2"><p>Esto se puede lograr con solo crear una variable que sea copia de la original antes de hacer el corte.↩︎</p></li>
<li id="fn3"><p>Cuando <code>breaks</code> se especifica de esta forma la variable se divide en segmentos de igual longitud. Para más detalles, véase la documentación en la función <code>cut()</code>.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents"><h2 class="anchored quarto-appendix-heading">Reutilización</h2><div id="quarto-reuse" class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/4.0/deed.es">https://creativecommons.org/licenses/by/4.0/deed.es</a></div></div></section><section class="quarto-appendix-contents"><h2 class="anchored quarto-appendix-heading">Cómo citar</h2><div><div class="quarto-appendix-secondary-label">BibTeX</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{2023,
  author = {},
  title = {Cut Cut Cut},
  date = {2023-06-21},
  url = {https://adatar.do/blog/Dmisc/cut3.html},
  langid = {es}
}
</code></pre><div class="quarto-appendix-secondary-label">Por favor, cita este trabajo como:</div><div id="ref-2023" class="csl-entry quarto-appendix-citeas">
<span>“Cut Cut Cut.”</span> 2023. June 21, 2023. <a href="https://adatar.do/blog/Dmisc/cut3.html">https://adatar.do/blog/Dmisc/cut3.html</a>.
</div></div></section></div> ]]></description>
  <category>Programación</category>
  <category>R</category>
  <category>R package</category>
  <category>Análisis de datos</category>
  <category>Dmisc</category>
  <guid>https://adatar.do/blog/Dmisc/cut3.html</guid>
  <pubDate>Wed, 21 Jun 2023 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
