Sesión de repaso de R

R - tidyverse y R - Base.

En la programación en R, existen dos sabores de programación muy distintos: R - tidy y R - base.

La principal característica de R - tidy es el uso de la pipa y la concatenación %>% , mientras que la principal característica de R - base es el uso de los corchetes [ y ].

Con ambos estilos se puede llegar a obtener los mismos resultados, sin embargo, estos estilos tienen distintas ventajas y desventajas.

R - Base:

Ventajas:

  • Es la forma original de escribir código de R.

  • Hay mucho material (de antes de 2012) disponible para aprender a programar en R bajo este estilo, y si contratas un curso en línea es MUY seguro que este sea el estilo que te enseñen.

  • Es más rápido que R - tidy (en caso de que te importe la velocidad). (Ejemplos donde si nos importa la velocidad: https://lnppmicrositio.shinyapps.io/redCaminosShiny/)

  • Aprenderlo nos ayudará a entender mejor como programar en R, al ser más versátil que los verbos.

  • Hay algunas cosas que son más fáciles de escribir en este estilo.

Desventajas:

  • Es complicado de escribir (hay que usar muchos paréntesis).

  • Es menos legíble que R - tidy (los corchetes son menos entendibles que los verbos).

  • La curva de aprendizaje es más elevada, por lo que puede desalentar a los estudiantes nuevos.

R - tidyverse

Ventajas:

  • Es muy legible, y fácil de entender.

  • Tiene una curva de aprendizaje muy rápida.

  • La escritura de código se facilita al poder concatenar (pipear) nuestos comandos.

  • Cuenta con el uso de verbos que facilitan la lectura de lo que estamos programando.

  • Es la manera moderna de aprender R, y los materiales de referencia se están escribiendo en este estilo.

  • Filosofía de programación congruente con múltiples librerías de R (como ggplot2, stringr, purrr, etc).

  • Tiene a la pipa %>% :3.

Desventajas:

  • Es algo lento (en comparación con el R - base).

  • Muchas personas (que ya trabajaban cómodas con R-Base) apenas estan aprendiendo a utilizarlo.

PREGUNTA: Cuál estilo/sabor recomiendo?

R: Ambos son muy buenos.

PREGUNTA: Cuál utilizo yo?

R: Ambos.

Es por esto que hay que estar preparados para cualquier situación que se atraviese en temas de programación en R.

R-base

Formulario rapido:

  • Si x es un vector (un vector de texto, lógico, numérico o factor categórico), x[1] seleccionará el elemento 1 del vector x.

  • Si x es un objeto tabular (un dataframe, tibble o matrix), se utiliza una coma dentro de los corchetes. Lo que se coloque a la izquierda de la coma seleccionará las filas de x, mientras que lo que se coloque a la derecha de la coma seleccionará las columnas de x.

\[x[filas,columnas]\]

Subsetting

Sea x un objeto dataframe, tibble o matrix, entonces:

  • x[1,] seleccionará la fila numero 1;

  • x[,1] seleccionara la columna numero 1;

  • x[-1,] removerá la fila numero 1;

  • x[,-c(1,3,5,7)] removerá las columnas numero 1, 3, 5 y 7;

Creación de nuevas variables

Sea x un objeto dataframe o tibble entonces:

  • x$nombre_variable seleccionará la variable llamada nombre_variable del objeto x.

  • x$nueva_columna <- c(1,2,3,4,5) creará una nueva columna dentro de x, cuyo nombre será nueva_columna y que contendrá los valores del 1 al 5 sí y sólo sí la columna x tiene 5 renglones de tamaño.

  • x[,c("Nombre", "Apellido")] seleccionará las columnas llamadas exactamente “Nombre” o “Apellido”.

Filtrado

Sea y un vector lógico (es decir, que toma valores TRUE o FALSE) el cual se le pasa a un objeto x, dataframe, tibble o matrix, entonces la tabla se filtrará, quedando aquellos renglones o columnas en los que el objeto y sea TRUE y se eliminarán los renglones o columnas en donde el objeto y sea FALSE.

Eso significa que:

  • Si el objeto x es un vector de tamaño 5, entonces

      `x[c(TRUE, TRUE, FALSE, TRUE, FALSE)]`

seleccionará los elementos 1, 2 y 4.

Ejemplo práctico:

data("mtcars")

# Renglones que cumplen la condicion que se expresa aca abajo
vector_logico <- mtcars$hp > 100

# Solo nos quedamos con los renglones donde los hp sean mayores a 100
mtcars[vector_logico,]
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
# Ahora, quedemonos con los renglones de los carros que tienen exactamente 8 cilindros
vector_logico <- mtcars$cyl == 8

mtcars[vector_logico,]
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
# En un solo paso 
mtcars[mtcars$cyl == 8,]
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
# Doble filtro, ahora quedemonos con los que tienen exactamente 8 cilindros y mas de 250 hp
mtcars[mtcars$cyl == 8 & mtcars$hp > 250,]
##                 mpg cyl disp  hp drat   wt qsec vs am gear carb
## Ford Pantera L 15.8   8  351 264 4.22 3.17 14.5  0  1    5    4
## Maserati Bora  15.0   8  301 335 3.54 3.57 14.6  0  1    5    8

Reordenamiento

Sea x un vector cuyos elementos tienen un orden que va de 1 hasta n, y deseamos cambiar el orden de sus elementos, entonces introducimos dentro de los corchetes un vector numérico que seleccione el orden y los elementos que deseamos, por ejemplo:

x[c(7,2,3,1,7),] seleccionará las filas numero 7, 2, 3, 1 y 7 nuevamente.

Si deseamos que el vector se ordene de manera ascendente, descendente o por orden alfabético [A-Z], entonces utilizamos la función sort().

Sea x un vector numérico, entonces:

  • sort(x) ordenará los elementos de manera ascendente (menor a mayor).

  • sort(x, decreasing = TRUE) ordenará los elementos de manera descendente (mayor a menor).

Sea x un vector de texto, entonces:

  • sort(x) ordenará los elementos de la A a la Z.

  • sort(x, decreasing = TRUE) ordenará los elementos de la Z a la A.

Para practicar, vamos a hacer un ejemplo práctico.

Ejemplo práctico, manipulando la base de los tweets de la película Parásitos, ganando el Oscar.

Para el ejemplo práctico de hoy, vamos a llevar a cabo las manipulaciones básicas que vimos el semestre pasado.

# Librerias
library(readxl)
library(tidyverse)

# Abrimos la base
bd <- read_xlsx("tweetsParasite.xlsx")

Manipulación de base de datos.

  1. Queremos quedarnos con las siguientes columnas:
  • screen_name

  • source

  • text

  • display_text_width

  • created_at

# En tidy 
bd <- bd %>% 
  select(screen_name, source, text, display_text_width, created_at)

# En r-base
bd[,c("screen_name", "source", "text", "display_text_width", "created_at")]
## # A tibble: 12,322 x 5
##    screen_name  source   text          display_text_wi… created_at         
##    <chr>        <chr>    <chr>                    <dbl> <dttm>             
##  1 SimkinHugo   Twitter… Aprovechando…               74 2020-02-10 23:59:29
##  2 elcomercio_… TweetDe… BTS celebra …               77 2020-02-10 23:54:29
##  3 elcomercio_… TweetDe… "Oscar 2020:…               93 2020-02-08 08:00:00
##  4 elcomercio_… TweetDe… #Oscar2020: …              105 2020-02-10 20:17:01
##  5 elcomercio_… TweetDe… "Oscar 2020:…               93 2020-02-08 00:20:00
##  6 elcomercio_… TweetDe… "“Parasite”:…              152 2020-02-10 17:12:00
##  7 elcomercio_… TweetDe… #Oscars2020:…              103 2020-02-10 20:07:51
##  8 elcomercio_… TweetDe… "Moon Jae-in…              120 2020-02-10 17:59:39
##  9 elcomercio_… TweetDe… “Parasite” e…              117 2020-02-09 14:03:12
## 10 elcomercio_… TweetDe… "¡Y el Oscar…              135 2020-02-10 03:31:47
## # … with 12,312 more rows

Ojo con las comillas!

  1. Queremos quedarnos con los renglones que van del primero al 501.
# En tidy 
bd %>% 
  head(501)
## # A tibble: 501 x 5
##    screen_name  source   text          display_text_wi… created_at         
##    <chr>        <chr>    <chr>                    <dbl> <dttm>             
##  1 SimkinHugo   Twitter… Aprovechando…               74 2020-02-10 23:59:29
##  2 elcomercio_… TweetDe… BTS celebra …               77 2020-02-10 23:54:29
##  3 elcomercio_… TweetDe… "Oscar 2020:…               93 2020-02-08 08:00:00
##  4 elcomercio_… TweetDe… #Oscar2020: …              105 2020-02-10 20:17:01
##  5 elcomercio_… TweetDe… "Oscar 2020:…               93 2020-02-08 00:20:00
##  6 elcomercio_… TweetDe… "“Parasite”:…              152 2020-02-10 17:12:00
##  7 elcomercio_… TweetDe… #Oscars2020:…              103 2020-02-10 20:07:51
##  8 elcomercio_… TweetDe… "Moon Jae-in…              120 2020-02-10 17:59:39
##  9 elcomercio_… TweetDe… “Parasite” e…              117 2020-02-09 14:03:12
## 10 elcomercio_… TweetDe… "¡Y el Oscar…              135 2020-02-10 03:31:47
## # … with 491 more rows
# En rbase
bd[1:501,]
## # A tibble: 501 x 5
##    screen_name  source   text          display_text_wi… created_at         
##    <chr>        <chr>    <chr>                    <dbl> <dttm>             
##  1 SimkinHugo   Twitter… Aprovechando…               74 2020-02-10 23:59:29
##  2 elcomercio_… TweetDe… BTS celebra …               77 2020-02-10 23:54:29
##  3 elcomercio_… TweetDe… "Oscar 2020:…               93 2020-02-08 08:00:00
##  4 elcomercio_… TweetDe… #Oscar2020: …              105 2020-02-10 20:17:01
##  5 elcomercio_… TweetDe… "Oscar 2020:…               93 2020-02-08 00:20:00
##  6 elcomercio_… TweetDe… "“Parasite”:…              152 2020-02-10 17:12:00
##  7 elcomercio_… TweetDe… #Oscars2020:…              103 2020-02-10 20:07:51
##  8 elcomercio_… TweetDe… "Moon Jae-in…              120 2020-02-10 17:59:39
##  9 elcomercio_… TweetDe… “Parasite” e…              117 2020-02-09 14:03:12
## 10 elcomercio_… TweetDe… "¡Y el Oscar…              135 2020-02-10 03:31:47
## # … with 491 more rows
  1. Queremos quedarnos con los renglones 1, 3, 5, 7 y 12,001.
# En tidy 
bd %>% 
  slice(c(1,3,5,7,12001))
## # A tibble: 5 x 5
##   screen_name  source   text           display_text_wi… created_at         
##   <chr>        <chr>    <chr>                     <dbl> <dttm>             
## 1 SimkinHugo   Twitter… Aprovechando …               74 2020-02-10 23:59:29
## 2 elcomercio_… TweetDe… "Oscar 2020: …               93 2020-02-08 08:00:00
## 3 elcomercio_… TweetDe… "Oscar 2020: …               93 2020-02-08 00:20:00
## 4 elcomercio_… TweetDe… #Oscars2020: …              103 2020-02-10 20:07:51
## 5 Lokkocs      Twitter… "Mejor Pelícu…              254 2020-02-09 06:13:47
# En rbase
bd[c(1,3,5,7,12001),]
## # A tibble: 5 x 5
##   screen_name  source   text           display_text_wi… created_at         
##   <chr>        <chr>    <chr>                     <dbl> <dttm>             
## 1 SimkinHugo   Twitter… Aprovechando …               74 2020-02-10 23:59:29
## 2 elcomercio_… TweetDe… "Oscar 2020: …               93 2020-02-08 08:00:00
## 3 elcomercio_… TweetDe… "Oscar 2020: …               93 2020-02-08 00:20:00
## 4 elcomercio_… TweetDe… #Oscars2020: …              103 2020-02-10 20:07:51
## 5 Lokkocs      Twitter… "Mejor Pelícu…              254 2020-02-09 06:13:47
  1. Queremos quedarnos con los renglones cuyos tweets hayan sido menores de 25 caracteres, y con las columnas screen_name y text.
# En tidy 
bd %>% 
  filter(display_text_width <= 25) %>% 
  select(screen_name, text)
## # A tibble: 35 x 2
##    screen_name     text                                                 
##    <chr>           <chr>                                                
##  1 ohmaigachi      GANÓ OTRO OSCAR PARASITE                             
##  2 TodosMenosMil   PARASITE ganó el oscar https://t.co/3nGIr048NB       
##  3 HaHamann94      Parasite ganó el Oscar https://t.co/zly6r8gERA       
##  4 NutellaBipolar  Parasite se llevó 4 Óscar                            
##  5 ParkHyunSik9    Parasite 4 oscar yassss                              
##  6 131ult          PARASITE OSCAR PERIOD                                
##  7 _shxxni131      YAY PARASITE OSCAR                                   
##  8 Henky_HS        Parasite keren, Oscar cuy                            
##  9 BeibyVacaParada Cuelgue #Parasite #Oscar https://t.co/UhGx0qwH95     
## 10 sandrinhabr97   "MERECIDO\n#Oscar\n#Parasite https://t.co/pwRCMUP9So"
## # … with 25 more rows
# En base
vectorLogico <- bd$display_text_width <= 25
bd[vectorLogico, c("screen_name", "text")]
## # A tibble: 35 x 2
##    screen_name     text                                                 
##    <chr>           <chr>                                                
##  1 ohmaigachi      GANÓ OTRO OSCAR PARASITE                             
##  2 TodosMenosMil   PARASITE ganó el oscar https://t.co/3nGIr048NB       
##  3 HaHamann94      Parasite ganó el Oscar https://t.co/zly6r8gERA       
##  4 NutellaBipolar  Parasite se llevó 4 Óscar                            
##  5 ParkHyunSik9    Parasite 4 oscar yassss                              
##  6 131ult          PARASITE OSCAR PERIOD                                
##  7 _shxxni131      YAY PARASITE OSCAR                                   
##  8 Henky_HS        Parasite keren, Oscar cuy                            
##  9 BeibyVacaParada Cuelgue #Parasite #Oscar https://t.co/UhGx0qwH95     
## 10 sandrinhabr97   "MERECIDO\n#Oscar\n#Parasite https://t.co/pwRCMUP9So"
## # … with 25 more rows
  1. Queremos crear una variable (tamanio) que nos diga si el tweet es chico (menor a 50 caracteres) o grande (mayor a 100 caracteres).
# En tidy 
bd %>% 
  mutate(tamanio = ifelse(display_text_width >= 100, 
                         "Grande", 
                         "Pequenio"))
## # A tibble: 12,322 x 6
##    screen_name  source text    display_text_wi… created_at          tamanio
##    <chr>        <chr>  <chr>              <dbl> <dttm>              <chr>  
##  1 SimkinHugo   Twitt… Aprove…               74 2020-02-10 23:59:29 Pequen…
##  2 elcomercio_… Tweet… BTS ce…               77 2020-02-10 23:54:29 Pequen…
##  3 elcomercio_… Tweet… "Oscar…               93 2020-02-08 08:00:00 Pequen…
##  4 elcomercio_… Tweet… #Oscar…              105 2020-02-10 20:17:01 Grande 
##  5 elcomercio_… Tweet… "Oscar…               93 2020-02-08 00:20:00 Pequen…
##  6 elcomercio_… Tweet… "“Para…              152 2020-02-10 17:12:00 Grande 
##  7 elcomercio_… Tweet… #Oscar…              103 2020-02-10 20:07:51 Grande 
##  8 elcomercio_… Tweet… "Moon …              120 2020-02-10 17:59:39 Grande 
##  9 elcomercio_… Tweet… “Paras…              117 2020-02-09 14:03:12 Grande 
## 10 elcomercio_… Tweet… "¡Y el…              135 2020-02-10 03:31:47 Grande 
## # … with 12,312 more rows
# En R-base
bd$tamanio <- ifelse(bd$display_text_width >= 100, 
                         "Grande", 
                         "Pequenio")
  1. Queremos quedarnos solo con los tweets que fueron escritos en Twitter para Android (“Twitter for Android”).
# En tidy 
bd %>% 
  filter(source == "Twitter for Android")
## # A tibble: 5,337 x 6
##    screen_name  source text    display_text_wi… created_at          tamanio
##    <chr>        <chr>  <chr>              <dbl> <dttm>              <chr>  
##  1 SimkinHugo   Twitt… Aprove…               74 2020-02-10 23:59:29 Pequen…
##  2 econorodo    Twitt… @criti…               43 2020-02-10 23:52:10 Pequen…
##  3 vela_nava2   Twitt… "@AlFi…              104 2020-02-10 23:51:21 Grande 
##  4 ahoyarr      Twitt… "Nadie…              148 2020-02-10 23:51:07 Grande 
##  5 anelnochebu… Twitt… "“Una …              239 2020-02-10 23:47:46 Grande 
##  6 venecixalda… Twitt… "La ge…              122 2020-02-10 23:37:11 Grande 
##  7 zappoll      Twitt… "Lo po…              169 2020-02-10 23:35:11 Grande 
##  8 oncereyes    Twitt… "Holly…               89 2020-02-10 23:34:15 Pequen…
##  9 mjpedreros_… Twitt… Parasi…              279 2020-02-10 23:32:41 Grande 
## 10 RetuitAfter… Twitt… "Por m…              209 2020-02-09 18:11:18 Grande 
## # … with 5,327 more rows
# En R-base
bd[bd$source == "Twitter for Android",]
## # A tibble: 5,337 x 6
##    screen_name  source text    display_text_wi… created_at          tamanio
##    <chr>        <chr>  <chr>              <dbl> <dttm>              <chr>  
##  1 SimkinHugo   Twitt… Aprove…               74 2020-02-10 23:59:29 Pequen…
##  2 econorodo    Twitt… @criti…               43 2020-02-10 23:52:10 Pequen…
##  3 vela_nava2   Twitt… "@AlFi…              104 2020-02-10 23:51:21 Grande 
##  4 ahoyarr      Twitt… "Nadie…              148 2020-02-10 23:51:07 Grande 
##  5 anelnochebu… Twitt… "“Una …              239 2020-02-10 23:47:46 Grande 
##  6 venecixalda… Twitt… "La ge…              122 2020-02-10 23:37:11 Grande 
##  7 zappoll      Twitt… "Lo po…              169 2020-02-10 23:35:11 Grande 
##  8 oncereyes    Twitt… "Holly…               89 2020-02-10 23:34:15 Pequen…
##  9 mjpedreros_… Twitt… Parasi…              279 2020-02-10 23:32:41 Grande 
## 10 RetuitAfter… Twitt… "Por m…              209 2020-02-09 18:11:18 Grande 
## # … with 5,327 more rows
  1. Otras operaciones.
# Renombrar las variables una por una
names(bd)[1] <- "NombreUsuario"

# Renombrara todas las variables de golpe
names(bd) <- c("NombreUsuario", "fuenteDelTweet", 
               "Texto", "Tamanio", "Fecha de Creacion", 
               "clasificacion")

bd
## # A tibble: 12,322 x 6
##    NombreUsuario fuenteDelTweet Texto Tamanio `Fecha de Creacion`
##    <chr>         <chr>          <chr>   <dbl> <dttm>             
##  1 SimkinHugo    Twitter for A… Apro…      74 2020-02-10 23:59:29
##  2 elcomercio_p… TweetDeck      BTS …      77 2020-02-10 23:54:29
##  3 elcomercio_p… TweetDeck      "Osc…      93 2020-02-08 08:00:00
##  4 elcomercio_p… TweetDeck      #Osc…     105 2020-02-10 20:17:01
##  5 elcomercio_p… TweetDeck      "Osc…      93 2020-02-08 00:20:00
##  6 elcomercio_p… TweetDeck      "“Pa…     152 2020-02-10 17:12:00
##  7 elcomercio_p… TweetDeck      #Osc…     103 2020-02-10 20:07:51
##  8 elcomercio_p… TweetDeck      "Moo…     120 2020-02-10 17:59:39
##  9 elcomercio_p… TweetDeck      “Par…     117 2020-02-09 14:03:12
## 10 elcomercio_p… TweetDeck      "¡Y …     135 2020-02-10 03:31:47
## # … with 12,312 more rows, and 1 more variable: clasificacion <chr>
# Arrange por tamano (menor a mayor)
bd[order(bd$Tamanio),]
## # A tibble: 12,322 x 6
##    NombreUsuario fuenteDelTweet Texto Tamanio `Fecha de Creacion`
##    <chr>         <chr>          <chr>   <dbl> <dttm>             
##  1 _schuldig_    Twitter for A… Yo p…      17 2020-02-10 01:49:01
##  2 _shxxni131    Twitter for A… YAY …      18 2020-02-10 05:38:27
##  3 131ult        Twitter for i… PARA…      21 2020-02-10 05:55:42
##  4 loflrina      Twitter for A… 2 os…      21 2020-02-10 03:26:56
##  5 DrunknCowboy  Twitter for i… Yay …      21 2020-02-10 03:25:34
##  6 jmkyaebe      Twitter for A… Yass…      21 2020-02-10 02:18:54
##  7 ChaoticLeah   Twitter for A… PARA…      21 2020-02-10 01:40:27
##  8 TodosMenosMil Twitter for i… PARA…      22 2020-02-10 16:23:16
##  9 HaHamann94    Twitter for i… Para…      22 2020-02-10 13:02:25
## 10 ohminyg       Twitter for A… PARA…      22 2020-02-10 03:57:36
## # … with 12,312 more rows, and 1 more variable: clasificacion <chr>
bd[order(bd$Tamanio, decreasing = TRUE),]
## # A tibble: 12,322 x 6
##    NombreUsuario fuenteDelTweet Texto Tamanio `Fecha de Creacion`
##    <chr>         <chr>          <chr>   <dbl> <dttm>             
##  1 RoyalDarjeel… Twitter for i… "Las…     538 2020-02-10 08:51:30
##  2 ondas2075     Twitter for i… Fres…     304 2020-02-10 14:05:14
##  3 ELTIEMPO      Twitter Web A… "Hac…     299 2020-02-10 03:39:12
##  4 Holaqut80980… Twitter for A… "#Os…     291 2020-02-10 06:19:05
##  5 DanielRamosQ  Twitter Web A… "Mi …     288 2020-02-09 22:59:39
##  6 NEORAM27      Twitter for A… "PAR…     286 2020-02-10 03:30:08
##  7 dreavg        Twitter for i… "Las…     286 2020-02-09 20:32:41
##  8 Nico_Ogeda    Twitter for A… "Por…     284 2020-02-08 23:15:37
##  9 MaddBCN       Twitter for i… La @…     283 2020-02-10 04:35:23
## 10 NymeriaSolo   Twitter for A… "Me …     282 2020-02-10 06:27:12
## # … with 12,312 more rows, and 1 more variable: clasificacion <chr>

Nota! group_by() y summarise() mejor ni lo intenten, esta bien complicado.