<?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/index.html</link>
<atom:link href="https://adatar.do/blog/index.xml" rel="self" type="application/rss+xml"/>
<description></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>
<item>
  <title>R: un primer vistazo</title>
  <dc:creator>Daniel E. de la Rosa</dc:creator>
  <link>https://adatar.do/blog/r/un-primer-vistazo.html</link>
  <description><![CDATA[ 




<section id="breve-reseña-histórica-de-r" class="level2">
<h2 class="anchored" data-anchor-id="breve-reseña-histórica-de-r">Breve reseña histórica de R</h2>
<p>R fue presentado al público en el año 1993 por Ross Ihaka y Robert Gentleman, quienes lo desarrollaron como un proyecto de investigación en la Universidad de Auckland, Nueva Zelanda.</p>
<blockquote class="blockquote">
<p>En 1995, R fue publicado bajo la licencia GNU General Public License (GPL) y se convirtió en un proyecto de código abierto.</p>
</blockquote>
<p>Posteriormente, en 1997 se fundó la Comprehensive R Archive Network (CRAN), una plataforma que hospeda la mayor colección de paquetes y librerías de R. Ese mismo año se fundó el R Core Team, un grupo de desarrolladores que se encarga de mantener y mejorar el lenguaje. Más tarde, en 2003, se creó la R Foundation for Statistical Computing, una organización sin fines de lucro que se encarga de brindar soporte a R y a la comunidad de usuarios.</p>
<p>Desde entonces, R se ha convertido en uno de los lenguajes más populares en el campo de la estadística y el análisis de datos gracias a su gran cantidad de paquetes y librerías especializadas, así como a su gran comunidad de usuarios y desarrolladores. El lenguaje se ha utilizado en una amplia variedad de campos, incluyendo el análisis financiero, la biología, la ingeniería, la medicina y la investigación social.</p>
<p>En los últimos años, R ha ganado un gran impulso debido a la creciente popularidad de la ciencia de datos y el aprendizaje automático. De hecho, R llegó a ocupar la posición número 8 en el ranking de los lenguajes de programación más populares en Agosto 2020, según el informe TIOBE Programming Community Index.</p>
</section>
<section id="algunas-características-de-r" class="level2">
<h2 class="anchored" data-anchor-id="algunas-características-de-r">Algunas características de R</h2>
<ul>
<li><em>R es un lenguaje de programación interpretado</em>. No es necesario compilar el código antes de ejecutarlo.</li>
<li><em>Es un lenguaje de programación funcional</em>. Las funciones son tratadas como valores y pueden ser pasadas como argumentos a otras funciones.</li>
<li><em>Es un lenguaje de programación de código abierto y multiplataforma</em>. Es compatible con múltiples sistemas operativos, incluyendo Windows, Mac OS X y Linux.</li>
</ul>
<p>Una de las principales características que, sin lugar a dudas, llevan a R a destacarse entre los demás lenguajes de programación es su facilidad, capacidad y velocidad para manejar de pequeños a grandes conjuntos de datos. Hoy en día existen muchas herramientas y paquetes especializados para leer y escribir dados en múltiples formatos, así como para conectarse a los distintos sistemas de bases de datos y APIs de terceros.</p>
<p>Otra característica importante de R es su amplia variedad de paquetes y librerías disponibles, que permiten realizar una gran cantidad de tareas, desde la manipulación de datos hasta la creación de gráficos y visualizaciones. Además, la comunidad de R ha desarrollado una gran cantidad de herramientas para facilitar el desarrollo de aplicaciones web e incluso móviles, y su incursión en campos como la inteligencia artificial y el aprendizaje automático.</p>
<p>Pero, la que quizás resulta la más importante característica de R, es su capacidad para generar gráficos y visualizaciones de alta calidad de forma nativa. A pesar de que cuenta con una gran cantidad de paquetes y librerías especializadas para la creación de gráficos y visualizaciones personalizados, incluyendo ggplot2, plotly, shiny, etc.</p>
<p>Una característica que indudablemente será muy útil para los usuarios de R es su capacidad para integrarse con otros lenguajes de programación, incluyendo Python, C, C++, Java, etc. Esto permite a los usuarios de R aprovechar las ventajas de otros lenguajes de programación, como la velocidad y eficiencia, para realizar tareas específicas, mientras que R se encarga de la manipulación y visualización de datos.</p>
<blockquote class="blockquote">
<p>Al ser un lenguaje de muy alto nivel y estar orientado especialmente al análisis de datos, R es un lenguaje muy fácil de aprender y de utilizar.</p>
</blockquote>
</section>
<section id="ejemplos-de-código-en-r" class="level2">
<h2 class="anchored" data-anchor-id="ejemplos-de-código-en-r">Ejemplos de código en R</h2>
<p>En otras entradas del blog abordaremos en detalle la sintaxis y el funcionamiento de R. Pero, por ahora veamos algunos ejemplos de código en R para que puedas tener una idea de cómo se ve y se escribe el código en este lenguaje.</p>
<section id="ejemplo-1-crear-un-vector" class="level3">
<h3 class="anchored" data-anchor-id="ejemplo-1-crear-un-vector">Ejemplo 1: Crear un vector</h3>
<p>En R, un vector es una colección de elementos del mismo tipo. Para crear un vector en R, utilizamos la función c(), que recibe como argumento una lista de elementos separados por comas. Por ejemplo, para crear un vector de números enteros, podemos escribir:</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb1-1"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```{r}</span></span>
<span id="cb1-2">x <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;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>)</span>
<span id="cb1-3">x</span>
<span id="cb1-4"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```</span></span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1] 1 2 3 4 5</code></pre>
</div>
</div>
</section>
<section id="ejemplo-2-operaciones-con-vectores" class="level3">
<h3 class="anchored" data-anchor-id="ejemplo-2-operaciones-con-vectores">Ejemplo 2: Operaciones con vectores</h3>
<p>Y, para que tengas una idea de por qué decimos que R es un lenguaje orientado al análisis estadístico, a continuación, multiplicamos por 2 cada elemento del vector x, sin la necesidad de instalar ningún paquete adicional o iterar sobre el vector, cosa que tendríamos que hacer en otros lenguajes de programación:</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb3-1"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```{r}</span></span>
<span id="cb3-2">x <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;">2</span></span>
<span id="cb3-3"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```</span></span></code></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1]  2  4  6  8 10</code></pre>
</div>
</div>
</section>
<section id="ejemplo-3-crear-un-gráfico" class="level3">
<h3 class="anchored" data-anchor-id="ejemplo-3-crear-un-gráfico">Ejemplo 3: Crear un gráfico</h3>
<p>Lo mismo va para crear un gráfico. Para esto podemos utilizar la función plot(), que recibe como argumentos el vector de valores en el eje x y el vector de valores en el eje y. Por ejemplo, para crear un gráfico de dispersión, podemos escribir:</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb5-1"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```{r}</span></span>
<span id="cb5-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">plot</span>(x, x <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;">2</span>)</span>
<span id="cb5-3"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```</span></span></code></pre></div>
<div class="cell-output-display">
<p><img src="https://adatar.do/blog/r/un-primer-vistazo_files/figure-html/unnamed-chunk-3-1.png" class="img-fluid" width="672"></p>
</div>
</div>
</section>
</section>
<section id="r-en-la-actualidad" class="level2">
<h2 class="anchored" data-anchor-id="r-en-la-actualidad">R en la actualidad</h2>
<p>Muchas empresas y organizaciones están adoptando R para realizar análisis avanzados de sus datos, y la comunidad de desarrolladores ha creado una gran cantidad de herramientas y paquetes especializados para facilitar estos análisis.</p>
<p>Como mencionamos antes, R es junto con Python uno de los lenguajes de programación más populares para el análisis de datos. Incluso, lo puedes encontrar integrado en otras herramientas de análisis de datos como Power BI.</p>
<p>Finalmente, no podemos dejar de mencionar el gran empuje que R ha recibido en los últimos años desde Posit, con el desarrollo de RStudio, una herramienta de desarrollo integrado (IDE, por sus siglas en inglés) para R que permite escribir código, ejecutarlo, visualizar los resultados y crear gráficos de forma rápida y sencilla. Aunque también existen otras herramientas como R Tools for Visual Studio, que permite escribir código R en Visual Studio y que está ganando cada vez más popularidad entre los desarrolladores de R.</p>
<p>No hay dudas de que R es un lenguaje de programación muy poderoso, con mucho que ofrecer y que está ganando cada vez más popularidad en el campo de la ciencia de datos. Si quieres aprender más sobre R, te recomendamos mantenerte al tanto de nuestro blog, donde publicaremos más entradas sobre este lenguaje de programación.</p>
<!-- # Referencias {-} -->


</section>

<div id="quarto-appendix" class="default"><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{e. de la rosa2023,
  author = {E. de la Rosa, Daniel},
  title = {R: un primer vistazo},
  date = {2023-06-21},
  url = {https://adatar.do/blog/r/un-primer-vistazo.html},
  langid = {es}
}
</code></pre><div class="quarto-appendix-secondary-label">Por favor, cita este trabajo como:</div><div id="ref-e. de la rosa2023" class="csl-entry quarto-appendix-citeas">
E. de la Rosa, Daniel. 2023. <span>“R: un primer vistazo.”</span> June
21, 2023. <a href="https://adatar.do/blog/r/un-primer-vistazo.html">https://adatar.do/blog/r/un-primer-vistazo.html</a>.
</div></div></section></div> ]]></description>
  <category>R</category>
  <category>Programación</category>
  <guid>https://adatar.do/blog/r/un-primer-vistazo.html</guid>
  <pubDate>Wed, 21 Jun 2023 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Programación literaria</title>
  <dc:creator>Daniel E. de la Rosa</dc:creator>
  <link>https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html</link>
  <description><![CDATA[ 




<p><img src="https://adatar.do/blog/images/programacion-literaria.jpg" alt="Programación literaria" height="300"></p>
<p>Muchos dirían que la década de 1970 fue una gran época para la tipografía<sup>1</sup>. No así el caso del científico de la computación y matemático <a href="https://es.wikipedia.org/wiki/Donald_Knuth">Donald E. Knuth</a> quien en 1978 presentó TeX, un sistema tipográfico con el que esperaba terminar con la, en ese entonces y según el propio Knuth, cada vez menor calidad de la tipografía.</p>
<p>A mediados de los 80s, como parte de los trabajos de desarrollo de WEB<sup>2</sup>, Knuth introdujo el concepto de <strong>programación literaria</strong>.</p>
<p>Lo que Knuth propone con la programación literaria es un programa de computadora en el que se combina texto en lenguaje natural, con bloques de código incrustados que cuando se ejecutan generan otros elementos (textos, gráficos, tablas) que forman parte del documento final. Esto es, combina el código/cálculos y el texto en un mismo documento. De hecho, el propio nombre de programación literaria o programación letrada (como también se le conoce), es una critica que hace Knuth a los llamados sistema de programación estructurada que imperaban en la época<sup>3</sup>.</p>
<p>Esta idea comenzó a ganar adeptos rápidamente, al punto que entre 1989 y 1999, Norman Ramsey desarrolló una herramienta de programación literaria inspirada en WEB, denominada <a href="https://en.wikipedia.org/wiki/Noweb">noweb</a><sup>4</sup>. La principal característica de esta nueva implementación, radicaba en su independencia del lenguaje de programación, lo que permitiría el desarrollo de herramientas de programación literaria en lenguajes de programación distintos de C, en el que se basaba su predecesor.</p>
<p>De hecho, anclado en estos trabajos, Friedrich Leisch presentó en 2002 una herramienta de programación literaria propia del lenguaje de programación R llamada <a href="https://en.wikipedia.org/wiki/Sweave">Sweave</a>, que permitía combinar código R y texto en lenguaje natural para producir documentos LaTeX y LyX. Rápidamente, Sweave se convirtió en el estándar y prácticamente único mecanismo para le generación y presentación de la documentación de los paquetes de R, mejor conocidos como viñetas.</p>
<p>Una década después, en el año 2012, un equipo interno de RStudio presentó <a href="https://yihui.org/knitr/">Knitr</a>, una clase de superset de Sweave que además agregaba soporte para otros lenguajes de programación como Python, Julia, JavaScript, etc. Conjuntamente introdujeron <a href="https://en.wikipedia.org/wiki/RMarkdown">RMarkdwon</a> (.Rmd), un formato que permitía la generación de los documentos que posteriormente eran procesados por Knitr.</p>
<p>Con el paso de los años, RMarkdown y Knitr comenzaron a ganar popularidad, llegando a irrumpir no solo en la documentación de los paquetes R, sino también en la generación de documentos técnicos y científicos tanto en R como en los otros mas de 60 lenguajes de programación que estos llegaron a soportar.</p>
<p>En consecuencia, surgieron proyectos derivados que se especializaban en la generación de documentos más estructurados<sup>5</sup>: i) dashboards, ii) websites, iii) documentación HTML para paquetes R completos, iv) libros, v) tutoriales interactivos, entre otros.</p>
<p>Hasta este punto hemos centrado la atención en la evolución de la programación literaria en el ámbito de R. Pero, fuera de R, la programación literaria ha tenido muchas implementaciones igual o más exitosas que las de este último.</p>
<ul>
<li><strong><a href="https://en.wikipedia.org/wiki/Project_Jupyter#Jupyter_Notebook">Jupyter Notebooks (2015)</a></strong>: una implementación de la programación literaria con soporte para la ejecución de código en los entornos de <strong>Ju</strong>lia, <strong>Pyt</strong>on y <strong>R</strong>. Esta implementación es la favorita en el ambiente de la ciencia de datos, sobre todo entre los usuarios de Python.</li>
<li><strong><a href="https://github.blog/2020-11-20-nbdev-a-literate-programming-environment-that-democratizes-software-engineering-best-practices/">nbdev (2020)</a></strong>: basado en Jupyter Notebooks, propone una herramienta para la creación de paquetes Python utilizando la programación literaria.</li>
</ul>
<p>El éxito de esta idea en la comunidad científica se debe principalmente a que la programación literaria introduce múltiples ventajas al momento de crear un documento, entre las que podemos mencionar por lo menos dos:</p>
<ul>
<li><strong>Una única fuente de la verdad</strong>: esto combina las funciones de un editor de texto para la narrativa y una hoja de cálculo, por ejemplo, para el análisis y procesamiento de los datos, en un único documento.</li>
<li><strong>Cálculos reactivos</strong>: esto permite que los cálculos, gráficos, tablas y otros elementos del documento se actualicen automáticamente cada vez que se corre el programa, recogiendo cualquier cambio que los datos hayan sufrido desde la última ejecución.</li>
</ul>
<p>En la ilustración que se muestra a continuación, se presenta el concepto de la programación literaria de forma resumida y generalizada.</p>
<div class="columns">
<div class="column center" style="width:40%;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://adatar.do/blog/images/qmd-file.png" class="img-fluid figure-img" style="width:40.0%"></p>
<figcaption class="figure-caption"></figcaption>
</figure>
</div>
</div><div class="column center" style="width:20%;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://adatar.do/blog/images/knitr.png" class="img-fluid figure-img"></p>
<figcaption class="figure-caption">==============&gt;</figcaption>
</figure>
</div>
</div><div class="column center" style="width:40%;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://adatar.do/blog/images/md-file.png" class="img-fluid figure-img" style="width:40.0%"></p>
<figcaption class="figure-caption"></figcaption>
</figure>
</div>
</div>
</div>
<p>El archivo de la izquierda, en formato <code>.qmd</code>, es un archivo de texto plano que permite insertar código en lenguaje natural con bloques de código que tienen como objetivo producir otros elementos que también formarán parte del documento final.</p>
<p>Mientras que el archivo de la derecha, en formato <code>.md</code>, es el archivo que resulta después que el archivo <code>.qmd</code> es procesado, en este caso por Knitr, reemplazando los bloques de código por los elementos que estos producen.</p>
<p>Este proceso, por lo general va acompañado de otras etapas donde este archivo es procesado y convertido en un documento final, con un formato de presentación más común, como por ejemplo, PDF, DOCX, HTML, etc.</p>
<blockquote class="blockquote">
<p>En definitiva, la programación literaria es una herramienta que permite la creación de documentos técnicos y científicos que combinan texto, código y resultados de forma interactiva.</p>
</blockquote>
<div class="callout callout-style-default callout-tip 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">
Ver a acontinuación
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li><a href="./quarto-mas-que-rmarkdown-2.0.html">Quarto: más que RMarkdown 2.0</a></li>
</ul>
</div>
</div>




<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>Véase <span class="citation" data-cites="2010Tipografia:e183">@2010Tipografia:e183</span>↩︎</p></li>
<li id="fn2"><p>El sistema de programación computacional propio de TeX, y que estaba formado por dos componentes: 1) <strong>TANGLE</strong>: que produce código Pascal compilable a partir de los textos fuente y 2) <strong>WEAVE</strong>: que produce documentación imprimible con un buen formato utilizando TeX. Vea <span class="citation" data-cites="web-tex">@web-tex</span>↩︎</p></li>
<li id="fn3"><p>Vea <a href="https://es.wikipedia.org/wiki/Programaci%C3%B3n_literaria">https://es.wikipedia.org/wiki/Programaci%C3%B3n_literaria</a>↩︎</p></li>
<li id="fn4"><p>Con sus correspondientes dos componentes: 1) notangle y 2) noweave↩︎</p></li>
<li id="fn5"><p>Vea <span class="citation" data-cites="Xie2022R:62fa">@Xie2022R:62fa</span>↩︎</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{e. de la rosa2022,
  author = {E. de la Rosa, Daniel},
  title = {Programación literaria},
  date = {2022-08-31},
  url = {https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html},
  langid = {es}
}
</code></pre><div class="quarto-appendix-secondary-label">Por favor, cita este trabajo como:</div><div id="ref-e. de la rosa2022" class="csl-entry quarto-appendix-citeas">
E. de la Rosa, Daniel. 2022. <span>“Programación literaria.”</span>
August 31, 2022. <a href="https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html">https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html</a>.
</div></div></section></div> ]]></description>
  <category>Programación literaria</category>
  <guid>https://adatar.do/blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html</guid>
  <pubDate>Wed, 31 Aug 2022 00:00:00 GMT</pubDate>
  <media:content url="https://adatar.do/blog/images/programacion-literaria.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Quarto: más que RMarkdown 2.0</title>
  <dc:creator>Daniel E. de la Rosa</dc:creator>
  <link>https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html</link>
  <description><![CDATA[ 




<p><img src="https://adatar.do/blog/images/quarto.png" class="img-fluid"></p>
<p>Hace ya más de una década desde que un equipo interno de RStudio<sup>1</sup> presentara <strong>Knitr</strong>, una nueva implementación de la Programación literaria en R, y <strong>RMarkdown</strong>, un sistema y formato de documentos que permite la integración de código en documentos de texto plano.</p>
<div class="callout callout-style-default callout-caution 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">
Lectura recomendada
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li><a href="./programacion-literaria-como-tenia-que-ser.html">Programación literaria: Como tenía que ser</a></li>
</ul>
</div>
</div>
<p>El éxito de Knitr fue tal que en poco tiempo prácticamente reemplazó a Sweave, el sistema de programación literaria que se utilizaba para la generación de la documentación de los paquetes de R, mejor conocidos como viñetas.</p>
<p>Aún más, el crecimiento del sistema fue tal que en los más de 10 años de desarrollo, este ha agregado soporte para poco más de 60 lenguajes de programación, incluyendo Python, Julia, SQL y muchos más. Del mismo modo, RMarkdown ha evolucionado y derivado en un conjunto de herramientas que permiten la creación de libros, presentaciones, sitios web, y mucho más.</p>
<blockquote class="blockquote">
<p>Todo esto llevó a que RMarkdown se convertiera en uno de los productos estrella de RStudio.</p>
</blockquote>
<p>Sin embargo, con el paso de los años, la compañía que había nacido puramente como una empresa de software para R, comenzó a expandir sus horizontes y a desarrollar herramientas para otros lenguajes de programación.</p>
<p>Para ese entonces Python ya se había convertido en uno de los lenguajes de programación más populares del mundo, y prácticamente el lenguaje de facto para los científicos de datos. Al tiempo que Julia, un lenguaje de programación relativamente nuevo, también comenzaba a ganar popularidad entre los usuarios de R. Por lo que no era de extrañar que RStudio mostrara interés en estos lenguajes.</p>
<p>De hecho, en 2015 había sido publicado el proyecto <a href="https://jupyter.org/">Jupyter</a>, un sistema que permitía la creación de documentos interactivos que combinaban texto, código y visualizaciones, es decir, una implementación de la programación literaria. Pero, que era particularmente popular entre los usuarios de Python y Julia. Aunque este también tenía soporte para R. De ahí el nombre de Jupyter, que es una abreviación de Julia, Python y R.</p>
<blockquote class="blockquote">
<p>Así estaban las cosas: <strong>RMarkdown</strong> en una esquina y <strong>Jupyter Notebook</strong> en la otra.</p>
</blockquote>
<p>Pero RStudio ya venía tomando medidas. Poco a poco la compañía fue ampliando sus horizontes y desarrollando herramientas para otros lenguajes de programación, hasta el punto que en 2022 la compañía incluso realiza un rebranding y pasa a llamarse <a href="https://posit.co/">Posit</a>, intentando así dejar atrás su pasado como una empresa de software para R, cosa que se veía reflejado en el propio nombre de la compañía.</p>
<p>Una de las primeras apuestas de Posit fue el desarrollo de <strong>Quarto</strong>, un sistema que permite la creación de documentos interactivos que combinan texto, código y visualizaciones, es decir, otra implementación de la programación literaria. Pero, que prometía ser mucho más que eso, y en definitiva lo es.</p>
<p>Quarto toma lo mejor de más de 10 años de RMarkdown y Jupyter Notebook, y lo integra en un solo sistema, que además es multiplataforma y compatible con una gran cantidad de lenguajes de programación, entre los que destacan R, Python, Julia y JavaScript.</p>
<p>Mientras que RMarkdown depende de R para correr código Python, Jupyter NB depende de Python para correr código R. Sin embargo, Quarto elimina esta dependencia cruzada entre los dos lenguajes, aún cuando te sigue permitiendo utilizar ambos dentro de un mismo proyecto.</p>
<p>Otra ventaja para unos –o desventaja para otros– de Quarto es que además de combinar las funcionalidades de todos los paquetes del ecosistema RMarkdown en un solo sistema, este agrega funcionalidades extras, como una mayor integración con el sistema de filtros de PANDOC, lo que abre un abanico enorme de posibilidades para la personalización de los documentos creados con la herramienta.</p>
<p>También, el propio Posit desarrolló una extensión del popular editor de texto <a href="https://code.visualstudio.com/">Visual Studio Code</a>, llamada <a href="https://marketplace.visualstudio.com/items?itemName=quarto.quarto">Quarto for VS Code</a>, que permite la edición de documentos Quarto directamente desde el editor de texto, y que además incluye un sistema de autocompletado para los lenguajes de programación soportados por Quarto, eliminando así la dependencia de RStudio IDE.</p>
<p>Por supuesto no todo es color de rosa. Como ya hemos mencionada varias veces, Quarto es un sistema relativamente nuevo, por lo que aún no cuenta con la misma cantidad de documentación y recursos que RMarkdown y Jupyter NB. La comunidad de Quarto está creciendo rápidamente, y cada vez hay más recursos disponibles para aprender a utilizar la herramienta. Sin embargo, muchos de los proyectos más populares basados en RMarkdown y Jupyter NB son mantenidos por la comunidad, por lo que no hay garantías de que los mismos migren a Quarto, o por lo menos no en un futuro cercano.</p>
<p>Habría que esperar un poco más para ver si Quarto se convierte en el nuevo estándar de la programación literaria, o si por el contrario, RMarkdown y Jupyter NB siguen siendo los reyes del juego.</p>
<div class="callout callout-style-default callout-important 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">
Heil RMarkdown
</div>
</div>
<div class="callout-body-container callout-body">
<p>Hay poco que Posit pueda hacer del lado de Jupyter y en cierta forma el futuro de este dependerá de la acogida que tenga Quarto entre los usuarios de Python y Julia, principalmente.</p>
<p>Sin embargo, tal como mencionara el propio <span class="citation" data-cites="xie2022Quarto:cb26">@xie2022Quarto:cb26</span>, autor principal de RMarkdwon y Knitr, RMarkdown relentizará su desarrollo, pero no dejará de terner soporte, ya que de hecho la mayoría de los documentos rmd pueden ser ejecutados por Quarto sin necesidad del más mínimo cambio. <!-- 
De heho, en Adatar hay algunos proyectos basados en RMarkdown, algunos de los cuales pudieran ser suspendidos, pero otros definitivamente seguirán siendo útiles.

Menciar algunos de los proyectos. --></p>
</div>
</div>
<p>Aunque pudiéramos seguir hablando de la programación literaria, Quarto y como este se compara con RMarkdown y Jupyter NB, la verdad es que lo ideal sería probar cada uno de ellos para ver cual se adapta mejor a las necesidades del proyecto.</p>
<!-- 
:::{.callout-tip}
# Ver a acontinuación

- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
- <a href="./quarto/primeros-pasos-documentos.html">Primeros pasos con Quarto: Documentos</a>
::: -->
<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>Actualmente <a href="https://posit.co/">Posit</a>↩︎</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{e. de la rosa2022,
  author = {E. de la Rosa, Daniel},
  title = {Quarto: más que RMarkdown 2.0},
  date = {2022-08-31},
  url = {https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html},
  langid = {es}
}
</code></pre><div class="quarto-appendix-secondary-label">Por favor, cita este trabajo como:</div><div id="ref-e. de la rosa2022" class="csl-entry quarto-appendix-citeas">
E. de la Rosa, Daniel. 2022. <span>“Quarto: más que RMarkdown
2.0.”</span> August 31, 2022. <a href="https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html">https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html</a>.
</div></div></section></div> ]]></description>
  <category>Programación literaria</category>
  <category>Quarto</category>
  <category>R</category>
  <category>Python</category>
  <guid>https://adatar.do/blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html</guid>
  <pubDate>Wed, 31 Aug 2022 00:00:00 GMT</pubDate>
  <media:content url="https://adatar.do/blog/images/quarto.png" medium="image" type="image/png" height="35" width="144"/>
</item>
<item>
  <title>Acerca del blog de Adatar</title>
  <dc:creator>Adatar </dc:creator>
  <link>https://adatar.do/blog/acerca-del-blog-de-adatar.html</link>
  <description><![CDATA[ 




<section id="quienes-somos" class="level2">
<h2 class="anchored" data-anchor-id="quienes-somos">¿Quienes somos?</h2>
<p><strong>El blog de Adatar</strong> está ideado como parte de una plataforma de comunicación y difusión del conocimiento en torno a los datos, la inteligencia de negocios, la analítica, aprendizaje automático, aprendizaje profundo, inteligencia articial, ciencia de datos, big data, entre otros temas relacionados.</p>
<p>En tal sentido, el blog estará interconectado con otras áreas de la página, así como a materiales externos que provean el acceso a publicaciones, tutoriales, cursos, herramientas, proyectos y otros recursos de interés para el lector.</p>
<p>Este es un esfuerzo colaborativo formado por profesionales de las áreas de la estadística, matemáticas, ingeniería, ciencias de la computación, economía, entre otras, que tienen como objetivo compartir conocimiento y experiencias en torno a los datos.</p>
<div class="callout callout-style-default callout-important 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">
Importante
</div>
</div>
<div class="callout-body-container callout-body">
<p>Ciertamente, por momentos –sobre todo al principio–, algunas publicaciones lucirán aisladas y carentes de significado. Sin embargo, con el tiempo, se irán creando conexiones entre las publicaciones y se irá construyendo un cuerpo de conocimiento que permita a los lectores comprender mejor los temas tratados.</p>
</div>
</div>
</section>
<section id="qué-nos-hace-diferentes" class="level2">
<h2 class="anchored" data-anchor-id="qué-nos-hace-diferentes">¿Qué nos hace diferentes?</h2>
<p>En efecto más de uno pensará <strong>“un blog más sobre estos”</strong>. Pero, así está construido todo el conocimiento <strong>“una espiral infinita que adopta, reusa y recicla el conocimiento existente al momento”</strong>. El objetivo del Blog de Adatar es abordar estos conocimientos desde una nueva perspectiva, y con suerte aportar nuevo conocimiento para más de uno. De todas formas a continuación se muestran de forma indicativa, más no limitativa, alguna de las razones que hacen del Blog de Adatar una opción interesante:</p>
<section id="contenido-preciso-y-conciso" class="level3">
<h3 class="anchored" data-anchor-id="contenido-preciso-y-conciso">Contenido preciso y conciso</h3>
<p>Las publicaciones del blog serán cortas y precisas, con las referencias necesarias hacia otras publicaciones o recursos externos, de forma que pueda servir como manual de referencia para temas particulares y de rápida lectura para aquellos lectores que pudieran estar familiarizados con el tema pero, que quizas puedan encontrar un punto de vista nuevo en estas publicaciones.</p>
</section>
<section id="contenido-en-español" class="level3">
<h3 class="anchored" data-anchor-id="contenido-en-español">Contenido en español</h3>
<p>La mayoría de los recursos relacionados con el mundo de la ciencia de datos están en inglés. Lo que puede constituír un problema para quienes no tienen este como su idioma principal. El contenido del blog de Adatar está en español, lo que permite que el lector pueda acceder a información de calidad en su idioma nativo, y por tanto, lograr un mayor aprovechamiento de los recursos.</p>
</section>
<section id="separación-teórico-práctica" class="level3">
<h3 class="anchored" data-anchor-id="separación-teórico-práctica">Separación teórico-práctica</h3>
<p>El contenido se divide en dos secciones: teoría y práctica. La sección de teoría está dedicada a explicar conceptos y métodos de manera teórica, mientras que la sección de práctica está dedicada a explicar cómo implementar los conceptos y métodos en R y/o Python. De esta manera, el lector puede acceder a la información que más le interese.</p>
</section>
<section id="abordaje-holístico" class="level3">
<h3 class="anchored" data-anchor-id="abordaje-holístico">Abordaje holístico</h3>
<p>El contenido está enfocado en el abordaje de los temas desde una perspectiva holística. Esto significa que se abordan los temas desde una perspectiva teórica, pero también se incluye información práctica y enfocada en los negocios que permita al lector aplicar los conceptos y métodos en su trabajo diario.</p>
<p>Mucho del contenido disponible en la web deja de lado los conceptos que se asume el lector debe conocer. En el blog de Adatar se parte del supuesto de que el lector no tiene conocimientos previos, por lo que se incluye información teórica y práctica básica que permita comprender los conceptos y métodos de manera completa.</p>
</section>
<section id="recursos-interactivos" class="level3">
<h3 class="anchored" data-anchor-id="recursos-interactivos">Recursos interactivos</h3>
<p>El contenido está acompañado de recursos interactivos que permiten al lector aplicar los conceptos y métodos de manera práctica. Estos recursos incluyen:</p>
<ul>
<li>Tutoriales interactivos en R y Python</li>
<li>Códigos de ejemplo</li>
<li>Projectos útiles</li>
<li>Juegos de datos</li>
<li>Ejercicios</li>
<li>Cuestionarios</li>
<li>Y mucho más</li>
</ul>
</section>
<section id="casos-de-estudio" class="level3">
<h3 class="anchored" data-anchor-id="casos-de-estudio">Casos de estudio</h3>
<p>La plataforma tambien se apoyará en la realización de casos de estudio, cursos, charlas, talleres y otros eventos que permitan al lector aplicar los conceptos y métodos abordados, de manera práctica.</p>
</section>
</section>
<section id="cómo-puedes-ayudar" class="level2">
<h2 class="anchored" data-anchor-id="cómo-puedes-ayudar">¿Cómo puedes ayudar?</h2>
<ul>
<li>Comparte y comenta para que más personas puedan verlo.</li>
<li>Si tienes alguna sugerencia puedes escribir a <a href="mailto:info@adatar.do">info@adatar.do</a></li>
<li>Este es un blog colaborativo, si quieres escribir un post, puedes contactarnos.</li>
</ul>


</section>

<div id="quarto-appendix" class="default"><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{2022,
  author = {, Adatar},
  title = {Acerca del blog de Adatar},
  date = {2022-07-19},
  url = {https://adatar.do/blog/acerca-del-blog-de-adatar.html},
  langid = {es}
}
</code></pre><div class="quarto-appendix-secondary-label">Por favor, cita este trabajo como:</div><div id="ref-2022" class="csl-entry quarto-appendix-citeas">
Adatar. 2022. <span>“Acerca del blog de Adatar.”</span> July 19, 2022.
<a href="https://adatar.do/blog/acerca-del-blog-de-adatar.html">https://adatar.do/blog/acerca-del-blog-de-adatar.html</a>.
</div></div></section></div> ]]></description>
  <category>Adatar</category>
  <category>Data Science</category>
  <guid>https://adatar.do/blog/acerca-del-blog-de-adatar.html</guid>
  <pubDate>Tue, 19 Jul 2022 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Proyecto: Dmisc</title>
  <link>https://adatar.do/blog/Dmisc/index.html</link>
  <description><![CDATA[ 








<div class="quarto-listing quarto-listing-container-default" id="listing-listing">
<div class="list quarto-listing-default">
<div class="quarto-post image-right" data-index="0" data-categories="Programación,R,R package,Análisis de datos,Dmisc" data-listing-date-sort="1687305600000" data-listing-file-modified-sort="1687354560323" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="11">
<div class="thumbnail">
<p><a href="../../blog/Dmisc/cut3.html"> <!-- img(9CEB782EFEE6)[progressive=false, height=]:blog/Dmisc/cut3.html --> </a></p>
</div>
<div class="body">
<a href="../../blog/Dmisc/cut3.html">
<h3 class="no-anchor listing-title">
Cut Cut Cut
</h3>
<div class="listing-subtitle">

</div>
</a>
<div class="listing-categories">
<div class="listing-category" onclick="window.quartoListingCategory('Programación'); return false;">
Programación
</div>
<div class="listing-category" onclick="window.quartoListingCategory('R'); return false;">
R
</div>
<div class="listing-category" onclick="window.quartoListingCategory('R package'); return false;">
R package
</div>
<div class="listing-category" onclick="window.quartoListingCategory('Análisis de datos'); return false;">
Análisis de datos
</div>
<div class="listing-category" onclick="window.quartoListingCategory('Dmisc'); return false;">
Dmisc
</div>
</div>
<a href="../../blog/Dmisc/cut3.html">
<div class="listing-description">
<p>¿Por qué <code>cut3</code>?</p>
</div>
</a>
</div>
<div class="metadata">
<a href="../../blog/Dmisc/cut3.html">
<div class="listing-date">
21 de junio de 2023
</div>
</a>
</div>
</div>
</div>
<div class="listing-no-matching d-none">
No hay resultados
</div>
</div> ]]></description>
  <guid>https://adatar.do/blog/Dmisc/index.html</guid>
  <pubDate>Wed, 21 Jun 2023 13:38:00 GMT</pubDate>
</item>
<item>
  <title>R programming</title>
  <link>https://adatar.do/blog/r/index.html</link>
  <description><![CDATA[ 








<div class="quarto-listing quarto-listing-container-default" id="listing-listing">
<div class="list quarto-listing-default">
<div class="quarto-post image-right" data-index="0" data-categories="R,Programación" data-listing-date-sort="1687305600000" data-listing-file-modified-sort="1687354560323" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="6">
<div class="thumbnail">
<p><a href="../../blog/r/un-primer-vistazo.html"> <!-- img(9CEB782EFEE6)[progressive=false, height=]:blog/r/un-primer-vistazo.html --> </a></p>
</div>
<div class="body">
<a href="../../blog/r/un-primer-vistazo.html">
<h3 class="no-anchor listing-title">
R: un primer vistazo
</h3>
<div class="listing-subtitle">

</div>
</a>
<div class="listing-categories">
<div class="listing-category" onclick="window.quartoListingCategory('R'); return false;">
R
</div>
<div class="listing-category" onclick="window.quartoListingCategory('Programación'); return false;">
Programación
</div>
</div>
<a href="../../blog/r/un-primer-vistazo.html">
<div class="listing-description">
<p><strong>R</strong> es un lenguaje de programación y ambiente de desarrollo utilizado principalmente para el análisis estadístico, manipulación y visualización de datos.</p>
</div>
</a>
</div>
<div class="metadata">
<a href="../../blog/r/un-primer-vistazo.html">
<div class="listing-date">
21 de junio de 2023
</div>
<div class="listing-author">
Daniel E. de la Rosa
</div>
</a>
</div>
</div>
</div>
<div class="listing-no-matching d-none">
No hay resultados
</div>
</div> ]]></description>
  <guid>https://adatar.do/blog/r/index.html</guid>
  <pubDate>Wed, 21 Jun 2023 13:38:00 GMT</pubDate>
</item>
<item>
  <title>Programación literaria</title>
  <link>https://adatar.do/blog/programacion-literaria/index.html</link>
  <description><![CDATA[ 








<div class="quarto-listing quarto-listing-container-default" id="listing-listing">
<div class="list quarto-listing-default">
<div class="quarto-post image-right" data-index="0" data-categories="Programación literaria" data-listing-date-sort="1661904000000" data-listing-file-modified-sort="1687354560323" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="5">
<div class="thumbnail">
<p><a href="../../blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html"> <img src="https://adatar.do/blog/images/programacion-literaria.jpg" class="thumbnail-image"> </a></p>
</div>
<div class="body">
<a href="../../blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html">
<h3 class="no-anchor listing-title">
Programación literaria
</h3>
<div class="listing-subtitle">
Como tenía que ser
</div>
</a>
<div class="listing-categories">
<div class="listing-category" onclick="window.quartoListingCategory('Programación literaria'); return false;">
Programación literaria
</div>
</div>
<a href="../../blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html">
<div class="listing-description">
<!-- desc(5A0113B34292)[max=175]:blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html -->
</div>
</a>
</div>
<div class="metadata">
<a href="../../blog/programacion-literaria/programacion-literaria-como-tenia-que-ser.html">
<div class="listing-date">
31 de agosto de 2022
</div>
<div class="listing-author">
Daniel E. de la Rosa
</div>
</a>
</div>
</div>
<div class="quarto-post image-right" data-index="1" data-categories="Programación literaria,Quarto,R,Python" data-listing-date-sort="1661904000000" data-listing-file-modified-sort="1687354560323" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="5">
<div class="thumbnail">
<p><a href="../../blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html"> <img src="https://adatar.do/blog/images/quarto.png" class="thumbnail-image"> </a></p>
</div>
<div class="body">
<a href="../../blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html">
<h3 class="no-anchor listing-title">
Quarto: más que RMarkdown 2.0
</h3>
<div class="listing-subtitle">

</div>
</a>
<div class="listing-categories">
<div class="listing-category" onclick="window.quartoListingCategory('Programación literaria'); return false;">
Programación literaria
</div>
<div class="listing-category" onclick="window.quartoListingCategory('Quarto'); return false;">
Quarto
</div>
<div class="listing-category" onclick="window.quartoListingCategory('R'); return false;">
R
</div>
<div class="listing-category" onclick="window.quartoListingCategory('Python'); return false;">
Python
</div>
</div>
<a href="../../blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html">
<div class="listing-description">
<!-- desc(5A0113B34292)[max=175]:blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html -->
</div>
</a>
</div>
<div class="metadata">
<a href="../../blog/programacion-literaria/quarto-mas-que-rmarkdown-2.0.html">
<div class="listing-date">
31 de agosto de 2022
</div>
<div class="listing-author">
Daniel E. de la Rosa
</div>
</a>
</div>
</div>
</div>
<div class="listing-no-matching d-none">
No hay resultados
</div>
</div> ]]></description>
  <guid>https://adatar.do/blog/programacion-literaria/index.html</guid>
  <pubDate>Wed, 21 Jun 2023 13:38:00 GMT</pubDate>
</item>
</channel>
</rss>
