Documente Academic
Documente Profesional
Documente Cultură
Operaciones:
Clases de datos en R
Numérico (numeric)
Cadenas (character)
Factores (factor)
Valores lógicos (logical)
is.numeric()
is.character()
Funciones para transformar la clase de un objeto
as.numeric()
as.character()
as.logical()
as.integer()
Clase numeric
Los números en R pueden ser enteros (integer) o reales (real). Tambien pueden
ser complejos (complex)
Objetos:
Vector
Vectores
Un vector es una lista ordenada de elementos de un mismo tipo. Un vector en R
puede contener una colección de números o de caracteres no numéricos.
El tipo de un vector se puede verificar con la función typeof()
x<-c (2, 4, 6, 8, 10)
Otra propiedad importante de un vector es su longitud. Este es el número de
elementos en el vector y se puede verificar con la función length()
Funciones para definir vectores:
c: sirve para concatenar datos en un vector
scan: permite leer o importa datos
Para vectores específicos: rep, seq
Funcion rep
rep(): permite construir vectores repitiendo datos o vectores
rep (x, n): vector formado por n copias de x
>x
[1] 0 2 4 6 8 10
> x[3] # access 3rd element
[1] 4
> x[c(2, 4)] # access 2nd and 4th element
[1] 2 6
x[-1] # access all but 1st element
[1] 2 4 6 8 10
x[c(2, -4)] # cannot mix positive and negative integers
Error in x[c(2, -4)] : only 0's may be mixed with negative subscripts
x[c(2.4, 3.54)] # real numbers are truncated to integers
[1] 2 4
Cuando usamos un vector lógico para indexar, TRUE devuelve la posición donde
se encuentra el vector lógico.
Esta útil característica nos ayuda a filtrar el vector como se muestra a
continuación.
>x
[1] -3 -2 -1 0 1 2
> x <- NULL
>x
NULL
> x[4]
NULL
Data Frame
En este artículo, aprenderá sobre marcos de datos en R; cómo crearlos, acceder a
sus elementos y modificarlos en su programa.
El marco de datos es una estructura de datos bidimensional en R. Es un caso
especial de una lista que tiene cada componente de igual longitud.
Cada componente forma la columna y el contenido del componente forma las filas.
Compruebe si una variable es un marco de datos o no
Podemos verificar si una variable es un marco de datos o no utiliza la función
class().
>x
SN Age Name
1 1 21 John
2 2 15 Dora
> typeof(x) # data frame is a special case of list
[1] "list"
> class(x)
[1] "data.frame"
En este ejemplo, x puede considerarse como una lista de 3 componentes con cada
componente que tiene un vector de dos elementos. A continuación se detallan
algunas funciones útiles para saber más sobre un marco de datos.
> x["Name"]
Name
1 John
2 Dora
> x$Name
[1] "John" "Dora"
> x[["Name"]]
[1] "John" "Dora"
> x[[3]]
[1] "John" "Dora"
Acceder con [[o $es similar. Sin embargo, difiere [en eso, la indexación con [nos
devolverá un marco de datos, pero los otros dos lo reducirán a un vector.
> str(trees)
'data.frame': 31 obs. of 3 variables:
$ Girth : num 8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...
$ Height: num 70 65 63 72 81 83 66 75 80 75 ...
$ Volume: num 10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ...
> head(trees,n=3)
Girth Height Volume
1 8.3 70 10.3
2 8.6 65 10.3
3 8.8 63 10.2
Podemos ver que tres es un marco de datos con 31 filas y 3 columnas. También
mostramos las primeras 3 filas del marco de datos.
Ahora procedemos a acceder al marco de datos como una matriz.
> trees[2:3,] # select 2nd and 3rd row
Girth Height Volume
2 8.6 65 10.3
3 8.8 63 10.2
> trees[trees$Height > 82,] # selects rows with Height greater than 82
Girth Height Volume
6 10.8 83 19.7
17 12.9 85 33.8
18 13.3 86 27.4
31 20.6 87 77.0
> trees[10:12,2]
[1] 75 79 76
Podemos ver en el último caso que el tipo devuelto es un vector ya que extrajimos
datos de una sola columna.
Este comportamiento puede evitarse pasando el argumento de la drop=FALSE de
la siguiente manera.
>x
SN Age Name
1 1 21 John
2 2 15 Dora
> x[1,"Age"] <- 20; x
SN Age Name
1 1 20 John
2 2 15 Dora
Agregar componentes
Se pueden agregar filas a un marco de datos utilizando la rbind()función.
> rbind(x,list(1,16,"Paul"))
SN Age Name
1 1 20 John
2 2 15 Dora
3 1 16 Paul
Del mismo modo, podemos agregar columnas usando cbind().
> cbind(x,State=c("NY","FL"))
SN Age Name State
1 1 20 John NY
2 2 15 Dora FL
Dado que los marcos de datos se implementan como una lista, también podemos
agregar nuevas columnas a través de asignaciones simples como listas.
>x
SN Age Name
1 1 20 John
2 2 15 Dora
> x$State <- c("NY","FL"); x
SN Age Name State
1 1 20 John NY
2 2 15 Dora FL
Eliminar componente
Las columnas del marco de datos se pueden eliminar asignándolas NULL.
Funcion scan
Usos
scan() permite entrar en consola la lista de datos
scan(fichero) define un vector a partir del fichero
función(vector)
sapply(vector, FUN=función)
Matrices
Son vectores con un atributo de dimensión que indica el número de filas y columnas
Matriz n x m: n filas y m columnas
La función matrix
A=diag(4)
rbind(A, a, b, c)
cbind(a, A, b, c)
x<-5:8
y<-12:15
cbind(x, y)
rbind(x,y)
x<-matrix(1:16, 4, 4)
y<-matrix(rep(5, 16), 4, 4)
x+y
x*y
Entradas y submatrices
Dada una matriz M:
M[ i, j ]: entrada (i, j) de M
M[ i, ]: fila i-ésima de M
M[ , j ]: columna j- ésima de M
A=matrix(1:30, nrows=5)
A=[2, 3]
A=[3, ]
A=[ , 3]
A=[ , 1:2]
A=[c(1, 3, 5), (2, 4 ,6)]
Función diag
mean(A)
rowSams(A)
colMeans(A)
Aplicación de funciones
f=function(x) {sqrt(sum(x^2)) }
apply(A, FUN=f, MARGIN=2)
log(A)
apply(A, FUN=log, MARGIN= c(1, 2))
Suma: +
Producto por escalar: *
Producto: %*%
Traspuesta: t
Determinante: det
Inversa: solve
Potencia: %^% del paquete expm
Rango: qr(…)$rank
A+B
5*A
A%*%B
t(C)
det(A)
solve(A)
qr(B)$rank
install.packages(“expm”)
library(expm)
B%^%20
solve(A, c(1,3 ))
var_ver=function(x){var(x)*(length(x)-1/ length(x)-)}
sd_ver=function(x){sqrt(var_ver(x))}
sapply(X, var_ver)
sapply(X, sd_ver)
scale(X)
apply(scale(X), 2, mean)
apply(scale(X), 2, var)
apply(scale(X, center=TRUE, scale=FALSE)
Factores
Los factores son un tipo especial de vectores que permiten analizar un conjunto de
datos clasificados según las características que definen el factor.
Un factor es una estructura de datos utilizada para campos que solo toma un
número finito predefinido de valores (datos categóricos). Por ejemplo: un campo de
datos como el estado civil puede contener solo valores de soltero, casado,
separado, divorciado o viudo.
En tal caso, conocemos los posibles valores de antemano y estos valores distintos
predefinidos se denominan niveles. El siguiente es un ejemplo de factor en R.
x
[1] single married married single
Levels: married single
Aquí, podemos ver que el factor x tiene cuatro elementos y dos niveles. Podemos
verificar si una variable es un factor o no utiliza la función class().
Del mismo modo, los niveles de un factor se pueden verificar utilizando la función
levels()
> class(x)
[1] "factor"
> levels(x)
[1] "married" "single"
Podemos ver en el ejemplo anterior que los niveles pueden estar predefinidos
incluso si no se usan.
Los factores están estrechamente relacionados con los vectores. De hecho, los
factores se almacenan como vectores enteros. Esto se ve claramente desde su
estructura str().
x <- factor(c("single","married","married","single"))
str(x)
Factor w/ 2 levels "married","single": 2 1 1 2