La función scan funciona con datos copiados de columnas desde HTML, Excel o desde Access. Si queremos copiar desde una fila, podemos transponerla previamente.
Números
1. Seleccionamos y copiamos los datos que queremos introducir en R. En nuestro caso desde Excel.
2. Ejecutamos el siguiente código en la consola.
x <- scan(dec = ",")
Especificamos el separador decimal coma pues por defecto es el punto y generaría un error.3. En la consola aparecerá
x <- scan(dec = ",")
1:
4. Presionamos Ctrl+V o bien botón secundario del ratón y seleccionamos pegar (paste).
> x <- scan(dec = ",")
1: 168,2624113
2: 205,9148936
3: 210
4: 212,3758865
5: 215,9361702
6: 222,9929078
7: 230
8: 231,3404255
9: 234,7588652
10: 240,893617
11:
Read 10 items
De esta manera habremos creado un vector numérico. Podemos comprobarlo y la suma de 2.172,47 que nos daba en Excel.
str(x)
num [1:10] 168 206 210 212 216 ...
sum(x)
[1] 2172.475
Caracteres
1. Seleccionamos y copiamos los datos de la columna que queremos introducir en R. En nuestro caso desde Excel, pero también se puede desde Access.
2. Ejecutamos el siguiente código en la consola.
x <- scan(what = character()) # Alternativa 1
x <- scan(what = "") # Alternativa 2
Especificamos el tipo de datos que leerá, caracteres en este caso.3. En la consola aparecerá
> x <- scan(what = character())
1:
4. Presionamos Ctrl+V o bien botón secundario del ratón y seleccionamos pegar (paste).
> x <- scan(what = character())
1: a
2: b
3: c
4: d
5: e
6: f
7: g
8: h
9: i
10: j
11:
Read 10 items
De esta manera habremos creado un vector de caracteres. Podemos comprobarlo con:
str(x)
chr [1:10] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
Números y caracteres
En este caso podríamos emplear una lista especificando los tipos para cada ítem.
x <- scan(what = list("", 0, 0, "", "", 0, "", "", "", "")) # Lista
> x <- scan(what = list("", 0, 0, "", "", 0, "", "", "", ""))
1: a
1: 1
1: 2
1: d
1: e
1: 10
1: g
1: h
1: i
1: j
2:
Read 1 record
str(x)
List of 10
$ : chr "a"
$ : num 1
$ : num 2
$ : chr "d"
$ : chr "e"
$ : num 10
$ : chr "g"
$ : chr "h"
$ : chr "i"
$ : chr "j"
O bien leer todos como caracteres y manipularlos posteriormente:
x <- scan(what = "") # Como caracteres
Delimitador de campos
Si tratamos de leer números o caracteres con espacios en blanco introducimos el argumento sep para que tratar como delimitador el salto de línea y no el espacio en blanco. De esta manera cada fila será un ítem.
# Para números
x <- scan(sep = "\n")
x <- scan(sep = "\n")
1: 1 2 4
2: 55 3
3: 88 7
4:
Read 3 items
# Para texto
x <- scan(what = "", sep = "\n")
> x <- scan(what = "", sep = "\n")
1: APPLIANCES/DEVICES
2: BABY CARE
3: BATH & SHOWER
4:
Read 3 items
Saltar la primera línea
Por ejemplo, si copiamos el encabezado de la columna y queremos eliminarlo, en nuestro ejemplo Etiquetas de fila. Como estamos pegando directamente desde el portapapeles, aunque especifiquemos el argumento skip = 1, importará la primera línea. Por ello, utilizamos esta alternativa.
x <- scan(what = "", sep = "\n") # Importamos como antes
> x <- scan(what = "", sep = "\n")
1: Etiquetas de fila
2: APPLIANCES/DEVICES
3: BABY CARE
4: BATH & SHOWER
5: BODY CARE
6: BOOTS
7: CASUAL
8:
Read 7 items
x <- x[-1] # Eliminamos primer elemento del vector
data.frame(x)
x
1 APPLIANCES/DEVICES
2 BABY CARE
3 BATH & SHOWER
4 BODY CARE
5 BOOTS
6 CASUAL
Entrada manual en la consola
En lugar de pegar el contenido, escribimos en la consola.
Muy buena publicación, me ha servido bastante
ResponderEliminarMe alegro. Muchas gracias por el comentario. Saludos.
Eliminar