In [3]:
# Cargamos el conjunto de datos
# En Python: 
# import seaborn as sns
# df1 = sns.load_dataset('iris')
df1 <- iris
df1
A data.frame: 150 × 5
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><fct>
5.13.51.40.2setosa
4.93.01.40.2setosa
4.73.21.30.2setosa
4.63.11.50.2setosa
5.03.61.40.2setosa
5.43.91.70.4setosa
4.63.41.40.3setosa
5.03.41.50.2setosa
4.42.91.40.2setosa
4.93.11.50.1setosa
5.43.71.50.2setosa
4.83.41.60.2setosa
4.83.01.40.1setosa
4.33.01.10.1setosa
5.84.01.20.2setosa
5.74.41.50.4setosa
5.43.91.30.4setosa
5.13.51.40.3setosa
5.73.81.70.3setosa
5.13.81.50.3setosa
5.43.41.70.2setosa
5.13.71.50.4setosa
4.63.61.00.2setosa
5.13.31.70.5setosa
4.83.41.90.2setosa
5.03.01.60.2setosa
5.03.41.60.4setosa
5.23.51.50.2setosa
5.23.41.40.2setosa
4.73.21.60.2setosa
⋮⋮⋮⋮⋮
6.93.25.72.3virginica
5.62.84.92.0virginica
7.72.86.72.0virginica
6.32.74.91.8virginica
6.73.35.72.1virginica
7.23.26.01.8virginica
6.22.84.81.8virginica
6.13.04.91.8virginica
6.42.85.62.1virginica
7.23.05.81.6virginica
7.42.86.11.9virginica
7.93.86.42.0virginica
6.42.85.62.2virginica
6.32.85.11.5virginica
6.12.65.61.4virginica
7.73.06.12.3virginica
6.33.45.62.4virginica
6.43.15.51.8virginica
6.03.04.81.8virginica
6.93.15.42.1virginica
6.73.15.62.4virginica
6.93.15.12.3virginica
5.82.75.11.9virginica
6.83.25.92.3virginica
6.73.35.72.5virginica
6.73.05.22.3virginica
6.32.55.01.9virginica
6.53.05.22.0virginica
6.23.45.42.3virginica
5.93.05.11.8virginica
In [5]:
# En Python: df1.head(10)
# En R:
head(df1, 10)
A data.frame: 10 × 5
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><fct>
15.13.51.40.2setosa
24.93.01.40.2setosa
34.73.21.30.2setosa
44.63.11.50.2setosa
55.03.61.40.2setosa
65.43.91.70.4setosa
74.63.41.40.3setosa
85.03.41.50.2setosa
94.42.91.40.2setosa
104.93.11.50.1setosa
In [4]:
tail(df1, 5)
A data.frame: 5 × 5
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><fct>
1466.73.05.22.3virginica
1476.32.55.01.9virginica
1486.53.05.22.0virginica
1496.23.45.42.3virginica
1505.93.05.11.8virginica
In [11]:
# En Python: df1.info()
# Factor--> categorica (variable que tiene categorias)
str(df1)
'data.frame':	150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
In [5]:
# En Python: df1.describe()
summary(df1)
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50  
                
                
                
In [12]:
# En Python: df1.columns
names(df1)
  1. 'Sepal.Length'
  2. 'Sepal.Width'
  3. 'Petal.Length'
  4. 'Petal.Width'
  5. 'Species'
In [9]:
# En Python df1['nombre_columna']
# En Python df1.nombre_columna
df1$Petal.Width
  1. 0.2
  2. 0.2
  3. 0.2
  4. 0.2
  5. 0.2
  6. 0.4
  7. 0.3
  8. 0.2
  9. 0.2
  10. 0.1
  11. 0.2
  12. 0.2
  13. 0.1
  14. 0.1
  15. 0.2
  16. 0.4
  17. 0.4
  18. 0.3
  19. 0.3
  20. 0.3
  21. 0.2
  22. 0.4
  23. 0.2
  24. 0.5
  25. 0.2
  26. 0.2
  27. 0.4
  28. 0.2
  29. 0.2
  30. 0.2
  31. 0.2
  32. 0.4
  33. 0.1
  34. 0.2
  35. 0.2
  36. 0.2
  37. 0.2
  38. 0.1
  39. 0.2
  40. 0.2
  41. 0.3
  42. 0.3
  43. 0.2
  44. 0.6
  45. 0.4
  46. 0.3
  47. 0.2
  48. 0.2
  49. 0.2
  50. 0.2
  51. 1.4
  52. 1.5
  53. 1.5
  54. 1.3
  55. 1.5
  56. 1.3
  57. 1.6
  58. 1
  59. 1.3
  60. 1.4
  61. 1
  62. 1.5
  63. 1
  64. 1.4
  65. 1.3
  66. 1.4
  67. 1.5
  68. 1
  69. 1.5
  70. 1.1
  71. 1.8
  72. 1.3
  73. 1.5
  74. 1.2
  75. 1.3
  76. 1.4
  77. 1.4
  78. 1.7
  79. 1.5
  80. 1
  81. 1.1
  82. 1
  83. 1.2
  84. 1.6
  85. 1.5
  86. 1.6
  87. 1.5
  88. 1.3
  89. 1.3
  90. 1.3
  91. 1.2
  92. 1.4
  93. 1.2
  94. 1
  95. 1.3
  96. 1.2
  97. 1.3
  98. 1.3
  99. 1.1
  100. 1.3
  101. 2.5
  102. 1.9
  103. 2.1
  104. 1.8
  105. 2.2
  106. 2.1
  107. 1.7
  108. 1.8
  109. 1.8
  110. 2.5
  111. 2
  112. 1.9
  113. 2.1
  114. 2
  115. 2.4
  116. 2.3
  117. 1.8
  118. 2.2
  119. 2.3
  120. 1.5
  121. 2.3
  122. 2
  123. 2
  124. 1.8
  125. 2.1
  126. 1.8
  127. 1.8
  128. 1.8
  129. 2.1
  130. 1.6
  131. 1.9
  132. 2
  133. 2.2
  134. 1.5
  135. 1.4
  136. 2.3
  137. 2.4
  138. 1.8
  139. 1.8
  140. 2.1
  141. 2.4
  142. 2.3
  143. 1.9
  144. 2.3
  145. 2.5
  146. 2.3
  147. 1.9
  148. 2
  149. 2.3
  150. 1.8
In [7]:
# En Python df1[ ['nombre_columna1', 'nombre_columna2'] ]
# En Python df1[ ['Sepal.Length', 'Sepal.Width'] ]
# En R: df1[filas, columnas]
# quiero todas las filas
head(df1[, c('Sepal.Length', 'Sepal.Width')])
A data.frame: 6 × 2
Sepal.LengthSepal.Width
<dbl><dbl>
15.13.5
24.93.0
34.73.2
44.63.1
55.03.6
65.43.9
In [11]:
1:10
c(1:10)
seq(1,10)
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
In [16]:
df1[1:6, c('Sepal.Length', 'Sepal.Width')]
A data.frame: 6 × 2
Sepal.LengthSepal.Width
<dbl><dbl>
15.13.5
24.93.0
34.73.2
44.63.1
55.03.6
65.43.9
  • 0 es un número natural
  • 0 no es natural

  • Python: 0 es natural, las numeraciones comienzan con el 0

  • R: 0 no es natural, las numeraciones comienzan con el 1
In [12]:
# En R: las numeraciones comienzan en 1
df1[c(1,90, 149), c('Sepal.Length', 'Sepal.Width')]
A data.frame: 3 × 2
Sepal.LengthSepal.Width
<dbl><dbl>
15.13.5
905.52.5
1496.23.4

Filtros¶

In [13]:
# df1[filas, columnas]
# df1[mascara booleana, ]
df1[df1$Petal.Width > 2, ]
A data.frame: 23 × 5
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><fct>
1016.33.36.02.5virginica
1037.13.05.92.1virginica
1056.53.05.82.2virginica
1067.63.06.62.1virginica
1107.23.66.12.5virginica
1136.83.05.52.1virginica
1155.82.85.12.4virginica
1166.43.25.32.3virginica
1187.73.86.72.2virginica
1197.72.66.92.3virginica
1216.93.25.72.3virginica
1256.73.35.72.1virginica
1296.42.85.62.1virginica
1336.42.85.62.2virginica
1367.73.06.12.3virginica
1376.33.45.62.4virginica
1406.93.15.42.1virginica
1416.73.15.62.4virginica
1426.93.15.12.3virginica
1446.83.25.92.3virginica
1456.73.35.72.5virginica
1466.73.05.22.3virginica
1496.23.45.42.3virginica
In [14]:
mascara <- df1$Petal.Width > 2 & df1$Species == 'virginica'
df1[mascara, ]
A data.frame: 23 × 5
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><fct>
1016.33.36.02.5virginica
1037.13.05.92.1virginica
1056.53.05.82.2virginica
1067.63.06.62.1virginica
1107.23.66.12.5virginica
1136.83.05.52.1virginica
1155.82.85.12.4virginica
1166.43.25.32.3virginica
1187.73.86.72.2virginica
1197.72.66.92.3virginica
1216.93.25.72.3virginica
1256.73.35.72.1virginica
1296.42.85.62.1virginica
1336.42.85.62.2virginica
1367.73.06.12.3virginica
1376.33.45.62.4virginica
1406.93.15.42.1virginica
1416.73.15.62.4virginica
1426.93.15.12.3virginica
1446.83.25.92.3virginica
1456.73.35.72.5virginica
1466.73.05.22.3virginica
1496.23.45.42.3virginica
In [15]:
head(df1)
A data.frame: 6 × 5
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><fct>
15.13.51.40.2setosa
24.93.01.40.2setosa
34.73.21.30.2setosa
44.63.11.50.2setosa
55.03.61.40.2setosa
65.43.91.70.4setosa
In [17]:
# En Python: df1.iloc[0,0]

# df1[fila, columna]
# acceder a un solo elemento
# fila 1, columna 1
df1[1,1]
5.1
In [18]:
# En Python: df1.iloc[0,0] = 3.0

# igualito a iloc
df1[1,1] <- 3.0
df1[1,1]
3
In [19]:
head(df1)
A data.frame: 6 × 5
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
<dbl><dbl><dbl><dbl><fct>
13.03.51.40.2setosa
24.93.01.40.2setosa
34.73.21.30.2setosa
44.63.11.50.2setosa
55.03.61.40.2setosa
65.43.91.70.4setosa

Creación de un dataframe¶

In [20]:
# Creamos dos vectores:
# Un vector de nombres
nombre <- c("Ana", "Luna", "Fernando")

# Un vector de edades
edad <- c(32, 17, 40)

# Procederemos a crear el dataframe con la funcion data.frame
df_new  <- data.frame(
  "Nombres" = nombre,
  "Edades"  = edad 
)

df_new
A data.frame: 3 × 2
NombresEdades
<chr><dbl>
Ana 32
Luna 17
Fernando40
In [21]:
# agregamos una columna nueva
df_new$Col.Nueva <- c(1,2,3)
df_new
A data.frame: 3 × 3
NombresEdadesCol.Nueva
<chr><dbl><dbl>
Ana 321
Luna 172
Fernando403
In [22]:
nombre <- c("Ana2")
edad <- c(32)
colnueva <- c(24)

# Procederemos a crear el dataframe con la funcion data.frame
df_new2  <- data.frame(
  "Nombres" = nombre,
  "Edades"  = edad,
  "Col.Nueva" = colnueva
)

df_New  <- rbind(df_new, df_new2)
df_New
A data.frame: 4 × 3
NombresEdadesCol.Nueva
<chr><dbl><dbl>
Ana 32 1
Luna 17 2
Fernando40 3
Ana2 3224

Funciones en R¶

Recordemos en Python

def <nombre funcion>(<nombre parametros>):
    # instrucciones
    return <lo que regresa la funcion>

En R

<nombre funcion> <- function(<nombres parametros>){
    # instrucciones
    return(<lo que regresa la funcion>)
}
$$ f(x)=x^{2} $$
In [23]:
f <- function(x){
    return (x^2)
}

f(4)
16

Graficación¶

In [24]:
# plot()
plot(x=df1$Petal.Length, y=df1$Petal.Width)
In [28]:
plot(x=df1$Petal.Length, y=df1$Petal.Width, col='red', pch = 19,
    cex=1.5)
In [34]:
plot(x=df1$Petal.Length, y=df1$Petal.Width, col=df1$Species, 
     # puntos gruesos
     pch = 19,
     # titulo
     main = "Diagrama de dispersión")
In [33]:
plot(x=df1$Petal.Length, y=df1$Petal.Width, col=df1$Species, 
     # puntos gruesos
     pch = 19,
     # titulo
     main = "Diagrama de dispersión")

# x: posicion
legend(x="topleft", 
       # Texto que queremos que se vea
       legend = c("Set", "Versi", "Virgi"), 
       fill=c("black", "red", "green"))

# Podemos agregar una cuadricula al grafico
grid()

Gráfica de funciones matemáticas¶

$$ f(x)=x^{2} $$
In [36]:
rango <- seq(-5,5,0.002)

plot(x=rango, y=f(rango),
     main = "Gráfico de una función", pch=19)

# Podemos agregar una cuadricula al grafico
grid()
In [38]:
f3 <- function(x){
    return(x^3)
}

plot(x=rango, y=f3(rango),
     main = "función cúbica", pch=19, col='red')

# Podemos agregar una cuadricula al grafico
grid()