Está en la página 1de 3

#El siguiente documento servir?

para que conozcan el tipo de variables que existe en R


### Tipos de variables
#numericas
2+2
a<- 2+2 #defino el nombre de la variable y del lado derecho lo que contiene
b= log(0) #logaritmo
c<- exp(1) #exponencial
d<- sqrt(69) #raiz
e<- a+c-d #suma de otras variables
trunc(e) #solo muestra la variable e en enteros
?round #permite acceder a la ayuda
round(e,2) #muestra la variable e con dos decimales
f<- c(2,4,6,8,10) #creo una lista variables numericas, c significa concatenar (unir)
h<- f*2 #la lista puede ser modificada con operaciones numericas

#logicas (YES/NO)
is.logical(a) #consulto si la variable a es logica, no lo es es numerica por eso dice FALSE
is.numeric(a) # ahora si es TRUE (verdad)
is.na(f) # consulto si en la variable f hay NA es decir sin valores, me dice FALSE en todos significa que todos tienen valores
g<- h==f # al poner == significa que estoy comparando sila variable h es igual a f, me responde por cada uno y me dice que es
falso que no es uno igual al otro
i<- h==2*f #pregunto si h es dos veces f y me responde que es verdadero en cada caso

#caracteres
j<- c("andres", "juan", "viviana", "julia") #son caracteres (letras) por tanto se deben poner en comillas, caso contrario cree
que son numericas y obtienes un error
str(j) # la funcion me permite ver que tipo de variable es, en este caso chr significa caracter
k<-j*2 # no puedes hacer operaciones numericas porque son caracteres
l<- c("rodriguez", "montalvo","romero", "cruz") # ingreso otra variable con caracteres
m<- rbind(j,l) #junte las dos variables por fila, la primera fila es por nombre y la segunda es de apellidos
n<- cbind(j,l) #junto las dos variables por columna, la primera columna es de nombres y la segunda de apellidos

#matrices
o<- matrix(NA, nrow = 3, ncol = 2) #cree una matriz sin valores de 3 filas y 2 columnas
o[,1]<- c(5,6,7) #llene la primera columna con valores
o[,2]<- c(8,9,10) #llene la segunda columna con valores
colnames(o)<- c("edad","talla") #les di nombre a las columnas
row.names(o)<- c("12 meses", "24 meses","36 meses") # le di nombre a las filas
o #ahora tiene una matriz con mejor presentacion y con valores
p<-c(2,4) #creo una variable con 2 valores
q<-rbind(o,p) #uno por fila la matriz o con la variable p, me da como resultado una matriz
row.names(q)[4]<- c("48 meses") #cambio el nombre de la fila 4
q #ahora tengo una matriz de 4x2

#listas y dataframes
r<- list(f,j,q) #una lista puede contener muchas variables, en este caso numerica, caracter y matriz
r[1] #accedo a el primer objeto de la lista
s<- data.frame(columna1=c(5,10,15),columna2=c("d","e","f")) #un data frame puede contener valore numericos y
caracteres. Fijate que ahora antes de ingresar la informacion ya le di un nombre a la columna
s[1,] #accedo a la primera fila del data frame

#factores
t<- c("quito","guayaquil","cuenca", "quito", "machala", "ibarra", "guayaquil","otavalo","quito")
u<-as.factor(t) # convierte los caracteres en factores. Encuentra los caracteres similares y les da un valor numerico, estos los
denomina como levels
summary(u) # si hacemos un resumen de la variable me dice cuantas veces se repite cada uno

###manipulacion de bases de datos


NROW(j) #numero de filas
NCOL(p) #numero de columnas
table(t) #numero de veces que se repite cada variable
colSums(o) #la suma de cada columna
rowSums(o) # la suma de cada fila
order(h,decreasing = T) #ordena de mayor a menor. Si se quiere de menor a mayor se pone decreasing=F
summary(o) # nos da el minimo, media, mediana, maximo y quartiles. Siempre que sean valores numericos
max(h) #da el maximo
min(f) # da el minimo
range(h) #da el min y max
v<- as.data.frame(q) #convertimos una matriz en dataframe
v[v$edad>5,] #filtro el data frame por filas que tengan edad mayor a 5
v[v$talla>9 & v$edad>5,] #filtro el data frame por filas que tengan edad mayor a 5 y filas con talla mayor a 9
t[!duplicated(t)] # duplicated encuentra duplicados, poner !da lo opuesto. Es decir me muestra solo lasciudades sin
duplicados
#Practica 2
#https://cran.r-project.org/bin/windows/Rtools/rtools42/rtools.html #descargar rTools
#https://git-scm.com/download/win #descargar Git
#install.packages("devtools")
#library(devtools)
#install_git("https://github.com/ccolonescu/PoEdata")
#library(PoEdata)
#data("andy")#data llama a la base de datos "andy"
#write.csv(andy,"andy.csv")
#data("cps_small")
#write.csv(cps_small,"cps_small.csv")

rm(list=ls())# limpia todo lo que esta en enviroment


getwd()#Permite ver cual es la direccion actual de los documentos, en esta direccion R busca documentos o guarda
documentos
read.csv("andy.csv")
setwd("C:/Users/DELL/Documents/ESPE/Econometria basica/Práctico/R") #Cambia la carpeta donde R va a usar como
direccion actual
read.csv("andy.csv")
data<- read.csv("andy.csv")
remove(data)
choose.files() #Para escoger la direccion de un archivo
andy<- read.csv("C:\\Users\\DELL\\Documents\\ESPE\\Econometria basica\\Práctico\\R\\andy.csv")
head(andy) #las primeras filas de la base de datos
tail(andy) #las ultimas filas de la base de datos
str(andy) # la estructura de los datos
View(andy) #muestra la base de datos en una pestana
fix(andy) #muestra la base de datos en una ventana
dim(andy) #dimension filas y columnas
ncol(andy) #columnas
nrow(andy) #filas
names(andy) #nombre de las variables(columnas)
sum(andy$sales) #para llamar una columna dentro de una variable se pone $
attach(andy) #permite acceder facilmente a las variables
sum(sales) #ahora no tengo que poner el nombre de la base de datos, solo pongo el nombre de la columna que me interesa
detach(andy) #elimino el attach de la base de datos andy
sum(sales) #ahora ya me da un error porque no sabe que es una columna de la base andy
write.csv(andy,"base1.csv") #me guardara la base andy como "base1" como csv en el working directory
write.table(andy,"base2.txt") #me guardara la base andy como "base1" como txt en el working directory

install.packages("readxl") #Instala una libreria para traer archivos desde excel


library(readxl) # llamo a la libreria, si no lo hago, no puedo usarla
cps_small <- read_excel("KAREN/ESPE/V NIVEL/ECONOMETRIA BASICA (8377)/MATERIA/cps_small.xlsx") #importo de excel
los datos
head(cps_small)
summary(cps_small$educ)
table(cps_small$educ)
table(cps_small$wage,cps_small$educ)
plot(cps_small$educ, cps_small$wage,xlab="education", ylab="wage", #grafico relaciona Y con X
main="Relacion educacion vs ingreso",col="darkblue")
abline(lm(cps_small$wage~cps_small$educ),col="red") #grafico de regresion lineal
cor(cps_small$wage,cps_small$educ) #correlacion
cov(cps_small$wage,cps_small$educ) #covarianza
mean(cps_small$wage) #media (promedio)
sd(cps_small$wage) #desv. estandar
var(cps_small$wage) #varianza
median(cps_small$wage) #mediana
hist(cps_small$wage) #error porque la variable esta como character
cps_small$wage<- as.numeric(cps_small$wage) # la converti en numerico
hist(cps_small$wage) #ahora no me da error
#otros graficos: barplot(barras con categorias); pie(grafico de pastel)

## Distribuciones de probabilidad discretas


#Considere lanzar un dado
sample(1:6,1) #simulamos un resultado aletorio
probabilidad<- rep(1/6,6)# cada una tiene probabilidad de 1/6
cum_probabilidad<- cumsum(probabilidad)
plot(cum_probabilidad, xlab = "resultados", main = "Distribucion de probabilidad acumulada")
#Lanzamos una moneda
sample(c("C", "S"), 1) #cara o seca sigue una distribucion bernuolli
dbinom(x = 5,size = 10,prob = 0.5) # Si lanzamos 10 veces cuantas veces obtenemos 5 caras P(k|n,p)
sum(dbinom(x = 4:7, size = 10, prob = 0.5)) #Ahora queremos saber cual es la probabilidad que caiga 4,5,6 o 7 veces cara
pbinom(size = 10, prob = 0.5, q = 7) - pbinom(size = 10, prob = 0.5, q = 3) #es igual que la linea anterior P(4<=k<=7)= P(k<=7)-
P(k<=3)
#FDP
k <- 0:10 # Al lanzar una moneda 11 veces
probability <- dbinom(x = k,size = 10, prob = 0.5) #vemos la probabilidad en cada caso
plot(x = k, y = probability,main = "Funcion de disribucion de la probabilidad")
#FDA
prob <- pbinom(q = k,size = 10, prob = 0.5)#obtenemos probabilidades acumuladas
plot(x = k,y = prob, main = "Funcion de distribucion acumulada")
# Esperanza E(Y)=y1*p1+y2*p2+...+yn*pn=sumatoria(yi*pi)
set.seed(1) #tomamos una semilla para que sea reproducible
mean(sample(1:6, 10000, replace = T))#la esperanza de botar un dado 10.000 veces
# Varianza sigma^2= var(Y)= E[(Y-u)^2]= sumatoria((yi-uy)^2*pi). Ojo la funcion var es la varianza muestral S^2=(1/n-
1)*sumatoria(yi-y_barra)^2
var(sample(1:6, 10000, replace = T))#varianza muestral
var(1:6) #varianza poblacional
#funciones de distribuciones de probabilidad en R: CDF=func.distr.prob.acum; PDF=func.densidad.probab.
# d=density (funcion de probabilidad)
# p=probability (funcion de distribucion acumulada)
# q=quantile (funcion inversa de la distribucion acumulada)
# r= random (generador numeros aleatorios)
#normal
curve(dnorm(x),xlim = c(-3.5, 3.5),ylab = "Densidad",
main = "Funcion estandar de densidad normal") # N(0,1)
dnorm(x = c(-1.96, 0, 1.96)) # calcula la densidad cuando x=-1.96, x=0 y x=1.96
curve(pnorm(x), xlim = c(-3.5, 3.5), ylab = "Probability",
main = "Funcion de disribucion normal estandar acumulativa")
1 - 2 * (pnorm(-1.96)) #la probabilidad que una normal estandarizada este entre -1,96 y 1,96 es P(-1.96<=Z<=1.96)= 1-
2*P(Z<=1.96)
pnorm(4, mean = 5, sd = 5) - pnorm(3, mean = 5, sd = 5) # Si Y~N(5;25) queremos saber P(3<=Y<=4) con u=0;sigma=1
#binomial
dbinom(32, 100, 0.5) #probability mass function Pr(X=x)
pbinom(32, 100, 0.5) #cumulative distribution function P(X<=x)
qbinom(0.3,100,0.5) #the p-th quantile of binomail distribution
rbinom(1000,100,0.5) #random binomial distribution

También podría gustarte