Download Lectura de datos

Document related concepts
no text concepts found
Transcript
Lectura de datos
Juan José de Haro
Contents
1 Leer datos dentro del programa: c()
2
2 Leer una línea del teclado: readline()
2
3 Leer las líneas de un archivo: readLines()
3
4 Leer datos en forma de tabla: read.table()
3
5 Leer datos de Internet con conexión https
4
1
1
Leer datos dentro del programa: c()
Cuando hay pocos datos para introducir la forma más rápica es utilizar la función c() donde asignamos a una
variable los valores separados por comas dentro de los paréntesis de la función.
# Creamos un vector numérico y otro de texto con 5 datos cada uno
# Posteriormente creamos un data frame a partir de ambos
x1 <- c(1,3,2,4,7)
x1
## [1] 1 3 2 4 7
x2 <- c("a","r","yt","k","8765")
x2
## [1] "a"
"r"
"yt"
"k"
"8765"
df <- data.frame(var1 = x1, var2 = x2)
df
##
##
##
##
##
##
2
1
2
3
4
5
var1 var2
1
a
3
r
2
yt
4
k
7 8765
Leer una línea del teclado: readline()
readlne() lee una línea de texto del teclado. El programa queda detenido hasta que el usuario pulsa RETURN.
Dado que el resultado será una cadena de texto si se desea un número deberá convertise con as.integer() para
enteros y con as.numeric() para decimales (y también enteros)
# Lee un texto del teclado y lo imprime en pantalla
r <- readline("Escribe algo: \n")
r
## Escribe algo:
## La Tierra es esférica
r
## [1] "La Tierra es esférica"
# Calcula los años que faltan para fin de siglo
num <- readline("Escribe el año actual con 4 cifras: ")
num <- as.numeric(num)
faltan <- 2100 - num
cat("Faltan",faltan,"años para fin de siglo\n")
## Escribe el año actual con 4 cifras: 2016
## Faltan 84 años para fin de siglo
2
3
Leer las líneas de un archivo: readLines()
Lee líneas de texto de una conexión. Esta función es la más apropiada para leer un archivo de texto completo
y asignarlo a una variable. Cada línea formará un elemento del vector.
# Lee un archivo de texto de Internet y lo almacena en una variable
darwin <- readLines("http://pastebin.com/raw.php?i=FMJNac0c")
## Warning in readLines("http://pastebin.com/raw.php?i=FMJNac0c"): incomplete
## final line found on 'http://pastebin.com/raw.php?i=FMJNac0c'
darwin
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
4
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
"Charles Robert Darwin (12 de febrero de 1809-19 de abril de 1882) "
"fue un naturalista inglés que postuló que todas las especies de "
"seres vivos han evolucionado con el tiempo a partir de un antepasado"
"común mediante un proceso denominado selección natural. La evolución "
"fue aceptada como un hecho por la comunidad científica y por buena "
"parte del público en vida de Darwin, mientras que su teoría de la "
"evolución mediante selección natural no fue considerada como la "
"explicación primaria del proceso evolutivo hasta los años 1930. "
"Actualmente constituye la base de la síntesis evolutiva moderna. "
"Con sus modificaciones, los descubrimientos científicos de Darwin "
"aún siguen siendo el acta fundacional de la biología como ciencia,"
"puesto que constituyen una explicación lógica que unifica las "
"observaciones sobre la diversidad de la vida."
""
"Texto de Wikipedia"
"https://es.wikipedia.org/wiki/Charles_Darwin"
Leer datos en forma de tabla: read.table()
Lee un archivo de texto que contiene una tabla (filas son casos y columnas variables) y lo transforma en un
data.frame.
Los archivos pueden estar en Internet o de forma local.
• Si la primera línea corresponde a los nombres de las variables pondremos: header=T
• Debemos especificar el separador de columnas que normalmente son:
– comas: sep=“,”
– espacios: sep=" "
– tabulaciones: sep=“\t”
• Si no deseamos que el texto sea convertido en factores añadiremos: stringsAsFactors=F
• Los decimales se espera que sean puntos (por ejemplo, 4.587) sin son comas (por ejemplo, 4,587) deberá
indicarse mediante: dec = “,”
• Si las filas tienen nombres se indicará el número de la columna que los contiene mediante: row.names =
Número
Los datos en Internet deben estar en texto puro y no en el formato de una página web. Esto se puede hacer
usando servicios como pastebin.com que permite la introducción de texto y su visión como texto puro (raw
data)
3
# Lectura de dos columnas de datos separadas por espacios y con nombres
datos <- read.table(file = "http://pastebin.com/raw.php?i=pzp108A3",
header= T, sep=" ")
dim(datos)
## [1] 100
2
head(datos)
##
##
##
##
##
##
##
1
2
3
4
5
6
e1
23.03546
23.18159
19.03975
19.62685
19.14048
22.03362
e2
27.83945
28.26648
21.86798
22.03184
22.31566
28.69002
# Lectura de datos con nombres de filas, columnas y
# con datos separados por comas
datos <- read.table(file = "http://pastebin.com/raw.php?i=xeV7h24k",
header= T, row.names=1, sep=",")
dim(datos)
## [1] 12 13
head(datos)
##
##
##
##
##
##
##
5
Paula B
Anabella
Marisa
Noa
Ariana
Paula L
A
1
1
1
1
1
0
B
0
0
0
0
0
0
C
1
1
0
1
1
1
D
1
1
0
1
0
0
E
0
1
1
1
1
1
F
0
0
0
0
1
1
G
0
0
0
0
0
0
H
1
0
1
1
1
1
I
1
1
1
1
1
1
J
1
1
1
1
1
1
K
1
1
1
1
1
1
L
0
0
0
0
1
1
M
1
1
1
1
1
1
Leer datos de Internet con conexión https
Los métodos anteriores no permiten leer a través de una conexicón segura https. Por este motivo se
puede descargar el archivo con download.file (que sí permite una conexión segura) y después leer los datos
normalmente
# Dirección que será leída
url <- "https://rpro.wikispaces.com/file/view/notas.txt"
# Nombre temporal para bajar archivo
tmp <- tempfile()
# Se baja el archivo
download.file(url, destfile=tmp, method="wget")
# Se lee con read.table
x <- read.table(tmp,header = T, sep=" ")
# Se elimina el archivo temporal
unlink(tmp)
x
4
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
T1
5.0
7.1
9.1
9.1
9.4
6.5
5.0
9.5
9.8
9.3
7.4
8.2
8.8
9.3
7.0
8.8
6.8
6.8
9.2
8.1
6.7
5.7
8.4
8.4
8.5
8.5
3.0
8.8
6.0
8.3
5.2
T2
6.5
6.0
9.5
9.7
9.0
1.0
8.5
9.5
9.1
9.0
7.0
6.8
9.5
10.0
7.4
1.0
7.6
4.0
5.2
8.3
10.0
1.0
10.0
9.2
10.0
7.8
1.0
9.7
1.5
8.6
8.0
5