Vous êtes sur la page 1sur 8

Importar Exportar datos en R

Con el objetivo de hacer este


post reproducible se ha hecho esta entrada. En el antiguo
post estn disponibles los cheros
utilizados en la presentacin
realizada por el RUG-BCN, sin embargo, ahora se ha intentado que esto sea ms comprensible
a partir de una breve explicacin, antes slo se haban proporcionado los scripts sin ms, ahora se proporciona un ejemplo
reproducible.
A continuacin se explicar brevemente la manera de importar datos que tienen diferentes formatos a R. La importacin es muy
simple, por eso se har con poco detalle. Los archivos de ayuda de R son muy completos y claros por si surge alguna duda que
vaya ms all de este post.
Para reproducir los ejemplos se pueden descargar los cheros aqu
Importacin de datos
Importando archivos CSV
!"#$%&'%( *+ ,-"!&'%(./!"#$%&'%(/0 1-"!-, 2 34
1-"!.!"#$%&'%(4 5 "%6 -% '$7$ !-8-9 :;'<, :$% !"#$%
55 '$;9#,= '$;9#,=&<%$'$!- =-", >?> @@@ 'A9@
55 B C,"9'- CDE FGGG HBBIJ G&KBLG BGB&L
55 F C,"9'- CDE FGGB HBLJK G&KBGL BGB&F
55 I C,"9'- CDE FGGF HBMFK G&KBGH BGG&I
55 L C,"9'- CDE FGGI HFBJB G&KGMG BGG&H
55 N C,"9'- CDE FGGL HFNIL G&MKJF BGG&M
55 H C,"9'- CDE FGGN HFKBF G&MMNM BGG&H
%"@@:=.!"#$%&'%(0 ':"%%4 5 -%#$ -% @"," '$9$'-, :" ':"%- !- '"!" (",<"8:-
55 '$;9#,= '$;9#,=&<%$'$!- =-", >?>
55 /O"'#$,/ /O"'#$,/ /<9#-A-,/ /9;7-,<'/
55 @@@ 'A9@
55 /9;7-,<'/ /9;7-,<'/
%;77",=.!"#$%&'%(4 5 -%#- -% ;9 8,-(- ,-%;7-9 -%#"!6%#<'$ :"% (",<"8:-%
55 '$;9#,= '$;9#,=&<%$'$!- =-", >?>
55 C,"9'-PBG QR>PBG S<9& PFGGG S<9& PBGNNK
55 T,--'-PBG CDEPBG B%# U;&PFGGF B%# U;&PBGJBG
55 R@"<9 PBG TDVPBG S-!<"9 PFGGL S-!<"9 PLIINF
55 S-"9 PFGGL S-"9 PIMKLG
55 I,! U;&PFGGJ I,! U;&PHBJLF
55 S"W& PFGGK S"W& PHLLFG
55 @@@ 'A9@
55 S<9& PG&HKJ S<9& P KH&J
55 B%# U;&PG&JGK B%# U;&P KM&I
55 S-!<"9 PG&JIJ S-!<"9 P KK&F
55 S-"9 PG&JJH S-"9 P KK&I
55 I,! U;&PG&MHK I,! U;&PBGG&H
http://rugbcn.wordpress.com/2012/10/08/963/
1
55 @@@ 'A9@
55 S<9& PG&HKJ S<9& P KH&J
55 B%# U;&PG&JGK B%# U;&P KM&I
55 S-!<"9 PG&JIJ S-!<"9 P KK&F
55 S-"9 PG&JJH S-"9 P KK&I
55 I,! U;&PG&MHK I,! U;&PBGG&H
55 S"W& PG&KBL S"W& PBGB&L
La instruccin X<-Y.!"#$%&'%(4 muestra la base de datos completa, la visualizacin es muy parecida a una hoja de clculo de
excel.
txt separados por tabulaciones, coma (,) y punto y coma (;)
Para importar datos cuyo formato sea .txt separados por tabulaciones se puede usar tanto la funcin ,-"!&!-:<7 o ,-"!&#"8:-
lo importante es utilizar el argumento %-@ que indica la forma en como se ha separado las columnas en el archivo, las alternativas
son %-@2Z0Z para aquellos que son separados por coma, %-@2Z[Z para los que son separados por punto y coma (;) y %-@2Z\#Z
para los que han sido separados con tabulaciones, este es el caso de nuestros datos del ejemplo. Ntese que %-@2Z\#Z es
equivalente a %-@2/\#/ no hay distincin entre usar comillas simples o dobles.
!"#$%&#W# *+ ,-"!&!-:<7./!"#$%&#W#/0 1-"!-, 2 3D]Q0 %-@ 2 /\#/4
1-"!.!"#$%&#W#4
55 '$;9#,= '$;9#,=&<%$'$!- =-", >?> @@@ 'A9@
55 B C,"9'- CDE FGGG HBBIJ G&KBLG BGB&L
55 F C,"9'- CDE FGGB HBLJK G&KBGL BGB&F
55 I C,"9'- CDE FGGF HBMFK G&KBGH BGG&I
55 L C,"9'- CDE FGGI HFBJB G&KGMG BGG&H
55 N C,"9'- CDE FGGL HFNIL G&MKJF BGG&M
55 H C,"9'- CDE FGGN HFKBF G&MMNM BGG&H
5 ":#-,9"#<("
!"#$%&#W#F *+ ,-"!&#"8:-./!"#$%&#W#/0 1-"!-, 2 3D]Q0 %-@ 2 /\#/4
1-"!.!"#$%&#W#F4
55 '$;9#,= '$;9#,=&<%$'$!- =-", >?> @@@ 'A9@
55 B C,"9'- CDE FGGG HBBIJ G&KBLG BGB&L
55 F C,"9'- CDE FGGB HBLJK G&KBGL BGB&F
55 I C,"9'- CDE FGGF HBMFK G&KBGH BGG&I
55 L C,"9'- CDE FGGI HFBJB G&KGMG BGG&H
55 N C,"9'- CDE FGGL HFNIL G&MKJF BGG&M
55 H C,"9'- CDE FGGN HFKBF G&MMNM BGG&H
El argumeto 1-"!-,23 es equivalente a 1-"!-,23D]Q.
Importar datos txt desde una web
La funcin ,-"!&#"8:- tambin permite importar datos #W# desde una web lo cual es muy til si no queremos descargar los
datos y almencenarlos en el disco duro, aunque siempre es recomendable descargarlos, los administradores de las webs podran
eliminar los datos y con ello perderamos la infomacin, as que no cuesta nada guardarlos en nuestro PC, pero igualmente se
mostrar como importar archivos #W# desde una web. La instruccin es muy simple, slo hasta escribir
,-"!&#"8:-.Z!<,-''<^9 Y-8Z4 y listo.
_-8 *+ /1##@P``@-$@:-&'%#&'7<'1&-!;`:--B'`%@%%`XBHa7"#-,<":%`b"#"R-#%a(BH`b<%-"%-$;#8,-"c&#W#/
!"#$%_-8B *+ ,-"!&#"8:-._-84 5 $ @;-!- -%',<8<,%- :" !<,-''<^9 !<,-'#"7-9#- !-9#,$
1-"!.!"#$%_-8B4 5 ;9 (<%#"d$ @"," (-, '^7$ %$9 :$% !"#$%
http://rugbcn.wordpress.com/2012/10/08/963/
2
mostrar como importar archivos #W# desde una web. La instruccin es muy simple, slo hasta escribir
,-"!&#"8:-.Z!<,-''<^9 Y-8Z4 y listo.
_-8 *+ /1##@P``@-$@:-&'%#&'7<'1&-!;`:--B'`%@%%`XBHa7"#-,<":%`b"#"R-#%a(BH`b<%-"%-$;#8,-"c&#W#/
!"#$%_-8B *+ ,-"!&#"8:-._-84 5 $ @;-!- -%',<8<,%- :" !<,-''<^9 !<,-'#"7-9#- !-9#,$
1-"!.!"#$%_-8B4 5 ;9 (<%#"d$ @"," (-, '^7$ %$9 :$% !"#$%
55 XB XF XI XL XN XH
55 B B II B B G B
55 F F IN B B G B
55 I I H B B G G
55 L L HG B B G B
55 N N BM I B B G
55 H H FH I B G G
Si se va a la web donde estn los
datos que se acaban de importar, se observar que tales datos no tienen encabezado (las columnas no tienen nombres) con lo cual
se ha omitido el argumento 1-"!-,, al ser omitido este toma el valor CEeRQ que es su valor por defecto. Como las columnas no
tienen nombres, entonces R ha creado nombres: XB0 XF0 &&&0 XH, para cambiar los nombres que ha sido asignados por defecto
puede usarse la funcin '$:9"7-% o se pueden asignar directamente cuando se importan usando el argumento '$:&9"7-% de la
funcin ,-"!&#"8:-.
_-8 *+ /1##@P``@-$@:-&'%#&'7<'1&-!;`:--B'`%@%%`XBHa7"#-,<":%`b"#"R-#%a(BH`b<%-"%-$;#8,-"c&#W#/
9$78,-% *+ './fb/0 /-!"!/0 /1<g$%/0 /'$'1-%/0 /="#-%/0 /7$#$%/4
!"#$%_-8F *+ ,-"!&#"8:-._-80 '$:&9"7-% 2 9$78,-%4
1-"!.!"#$%_-8F4 5 ;9 (<%#"d$ @"," (-, '^7$ ,-%;:#"
55 fb -!"! 1<g$% '$'1-% ="#-% 7$#$%
55 B B II B B G B
55 F F IN B B G B
55 I I H B B G G
55 L L HG B B G B
55 N N BM I B B G
55 H H FH I B G G
En el ejemplo anterior, tanto la direccin web como los nombres de las columnas se pudieron haber escrito dentro de la funcin
,-"!&#"8:- pero por nes expositivos se han preasignado a los objetos _-8 y 9$78,-%, respectivamente, para luego
introducirlos en sus respectivos lugares dentro de ,-"!&#"8:-.
El legendario Copy/Paste
Para no perder la costumbre y para darle su respectivo homenaje al legendario Copy/Paste se tiene su equivalente en R y se usa
tal y cual se explica claramente en este post.
Para usar el copiar y pegar en R basta con seleccinar los datos a ser importados (preferiblemente de Excel) y copiar (V#,: h V) y
en R V#,: h X no funciona, su equivalente es ,-"!&!-:<7.Z':<@8$",!Z4. A manera de ejemplo se importarn los datos de esta
web que la se ha usado para los
ejemplos anteriores, para hacerlo slo basta con seleccionar todos los datos hacer V#,: h V y luego ejecutar lo siguiente:
!"#$%_-8I *+ ,-"!&!-:<7.Z':<@8$",!Z4
Excel
Para importar directamente desde excel o exportar a excel en su respectivo formato .xls se deben cargar paquetes adicionales, lo
cual no me parece nada atractivo, porque los archivos &#W# o &'%( funcionan muy bien en todos los softwares estadsticos y
tambin en excel mismo, sin embargo, para aquellos que les gusta mantener sus datos en archivos &W:% pueden estar tranquilos
porque incluso en ese formato se importa a R.
Para importar archivos desde cheros de excel a R se debe instalar el paquete ieV$99-'# disponible en CRAN
.
http://rugbcn.wordpress.com/2012/10/08/963/
3
cual no me parece nada atractivo, porque los archivos &#W# o &'%( funcionan muy bien en todos los softwares estadsticos y
tambin en excel mismo, sin embargo, para aquellos que les gusta mantener sus datos en archivos &W:% pueden estar tranquilos
porque incluso en ese formato se importa a R.
Para importar archivos desde cheros de excel a R se debe instalar el paquete ieV$99-'# disponible en CRAN
.
5 <9%#"::&@"'c"A-%.ZieV$99-'#Z4
5 :<8,",=.ieV$99-'#4
5 (<A9-##-.ZieV$99-'#Z4 5 S"9;": .(<j-#"4 -% 7;= k#<:
5 Y8 *+ :$"!_$,c8$$c.Ze<8,$B&W:%Z0 ',-"#- 2 3D]Q4 -W'-:B *+
5 ,-"!_$,c%1--#.Y80 %1--# 2 Zl$g"BZ4
Otra manera de hacerlo, un poco mejor que usando ieV$99-'#es con la funcin ,-"!&W:% del paquete A!"#".
5 <9%#"::&@"'c"A-%.ZA!"#"Z4 :<8,",=.A!"#"4 -W'-:F *+
5 ,-"!&W:%.Ze<8,$B&W:%Z0 %1--#2B4 5 S;'1$ 7m% Om'<: n;- -: "9#-,<$,&
La funcin ,-"!&W:% permite importar archivos W:% desde la web. Por ejemplo, vamos a esta web
e importaremos el chero llamado ZV"9'-,&W:%Z
5 _-8V"9'-, *+
5 Z1##@P``@-$@:-&'%#&'7<'1&-!;`:--B'`%@%%`XBHa7"#-,<":%`b"#"R-#%a(BH`V"9'-,&W:%Z
5 '"9'-,ieR *+ ,-"!&W:%._-8V"9'-,4
Desde SPSS
Para importar cheros %"( se puede usar el paquete O$,-<A9 o el paquete l7<%'. Se ilustrar el uso de ambos.
A continuacin se importarn los datos correspondientes a una base de datos disponible en el libro
de Mark Berenson que consiste en una encuesta aplicada a 400
empleados de una compaa. Pginas 33-40.
:<8,",=.O$,-<A94
-7@:-"!$%B *+ ,-"!&%@%%./Q7@:-"!$%aLGG&%"(/0 #$&!"#"&O,"7- 2 3D]Q4
!<7.-7@:-"!$%B4
55 oBp LGG IG
-7@:-"!$%BoBPN0 BPJp
55 V$!<A$ l$,"% ?';@"'<$9 Q!"! Q!;'"'<$9 R-W$ '-7@-"
55 B B NG T-,-9'<": IN FG S"%';:<9$ F
55 F F IG ?8,-,$ HL BL C-7-9<9$ F
55 I I LG T-,-9'<": II BN S"%';:<9$ F
55 L L LG 3-'9<'$`(-9#"% FI BL S"%';:<9$ B
55 N N NG E@$=$ "!7<9& II BF C-7-9<9$ B
Se han mostrado los primeros 5 casos de las primeras 7 variables. Es importante sealar que al momento de usar ,-"!&%@%% se
tiene que usar #$&!"#"&O,"7-23D]Q si no se hace as entonces el resultado ser una lista en lugar de data.frame.
Otra forma de importar datos de SPSS es usando la funcin %@%%&A-# del paquete l7<%', con %@%%&A-# el resultado por defecto
es un !"#"&O,"7-.
5 :<8,",=.l7<%'4
http://rugbcn.wordpress.com/2012/10/08/963/
4
Otra forma de importar datos de SPSS es usando la funcin %@%%&A-# del paquete l7<%', con %@%%&A-# el resultado por defecto
es un !"#"&O,"7-.
5 :<8,",=.l7<%'4
5 -7@:-"!$%F *+ %@%%&A-#.ZQ7@:-"!$%aLGG&%"(Z4
Un ejemplo con fechas
Para el siguiente ejemplo se usar una base de datos cticia empleada en las clases de SAS y R
en el Mster en Estadstica de la Universidad
Politcnica de Catalunya .
Una de las ventajas que tiene la funcin %@%%&A-# sobre ,-"!&%@%% es la capacidad de lidiar con fechas. En el siguiente ejemplo
se pone de relive tal diferencia y la ventaja misma de %@%%&A-#.
Se importar una pequea base de datos llamada b"#$%R>RR&%"( compuesta por 8 observaciones sobre 6 variables: 9$70 -!"0
":#0 @-%0 %-W0 8!"= que corresponde a nombre, edad, altura, peso, sexo y fecha de nacimiento, como ha de esperarse cada
variable debe tener formato diferente y especcamente la variable 8!"= debe teber formato de fecha, sin embargo, como se ve a
continuacin, la funcin ,-"!&%@%% no la importa como tal, el resto de variables son importadas perfectamente.
:<8,",=.O$,-<A94
!%@%% *+ ,-"!&%@%%./b"#$%R>RR&%"(/0 #$&!"#"&O,"7- 2 34
!%@%% 5 @,$8:-7"P (",<"8:- !8"= -% ;9" O-'1" = 9$ %":- '$7$ O$,7"#$ O-'1"
55 9$7 -!" ":# @-% %-W 8!"=
55 B e";," FN BHJ HN S;g-, B&FMN-hBG
55 F S",<" FB BHG NJ S;g-, B&FMN-hBG
55 I >-!,$ FI BJM MI l$78,- B&IGL-hBG
55 L q$%-@ FK BJG HK l$78,- B&FNJ-hBG
55 N S",#1" FI BHI HN S;g-, B&FHK-hBG
55 H q$,!< BK BMN KG l$78,- B&FBI-hBG
55 J Q,<c IB BJH JJ l$78,- B&FLH-hBG
55 M S",<$9 rE BNK HF S;g-, B&FIB-hBG
Como se aprecia, la base fue correctamente importada excepto por la variable 8!"= que no tiene formato fecha, para ver qu clase
de variable es cada usa de ellas se puede hacer lo siguiente:
%"@@:=.!%@%%0 ':"%%4
55 9$7 -!" ":# @-% %-W 8!"=
55 /O"'#$,/ /9;7-,<'/ /9;7-,<'/ /9;7-,<'/ /O"'#$,/ /9;7-,<'/
Como era de esperarse, todas tienen el formato correcto, excecto 8!"=, pero esto se arregla fcilmente haciendo:
!%@%% *+ #,"9%O$,7.!%@%%0 8!"= 2 "%&b"#-.fR?!"#-.BNMF0 BG0 BL4 h !%@%%s8!"=44
!%@%%
55 9$7 -!" ":# @-% %-W 8!"=
55 B e";," FN BHJ HN S;g-, BKMK+BB+BF
55 F S",<" FB BHG NJ S;g-, BKKG+GB+GB
55 I >-!,$ FI BJM MI l$78,- BKKH+GF+FK
55 L q$%-@ FK BJG HK l$78,- BKMB+GI+GF
55 N S",#1" FI BHI HN S;g-, BKML+BF+IB
55 H q$,!< BK BMN KG l$78,- BKHJ+GF+FF
55 J Q,<c IB BJH JJ l$78,- BKJJ+GK+FI
55 M S",<$9 rE BNK HF S;g-, BKJF+BF+IB
Con esto se resuelve el problema de las fechas, para saber qu hace la funcin fR?!"#- pude ejecutarse en R lo siguiente:
tfR?!"#- o ver aqu.
Todo lo anterior se puede hacer en un slo paso usando la funcin %@%%&A-# de la siguiente manera:
http://rugbcn.wordpress.com/2012/10/08/963/
5
Con esto se resuelve el problema de las fechas, para saber qu hace la funcin fR?!"#- pude ejecutarse en R lo siguiente:
tfR?!"#- o ver aqu.
Todo lo anterior se puede hacer en un slo paso usando la funcin %@%%&A-# de la siguiente manera:
5 :<8,",=.l7<%'4
5 %@%%&A-#.Zb"#$%R>RR&%"(Z4 5 @,$8:-7"% '$9 :"% O-'1"%
5 %@%% *+ %@%%&A-#.Zb"#$%R>RR&%"(Z0 !"#-(",%2Z8!"=Z4 5 @,$8:-7" ,-%;-:#$
Basta con usar el argumento !"#-(",% y proporcionarle el nombre de la variable que es tipo fecha para que la interprete e
importe como tal.
%@%%&A-# tambin permite importar desde la web.
5
5 %@%%&A-#.Z1##@P``@-$@:-&'%#&'7<'1&-!;`:--B'`%@%%`XBHa7"#-,<":%`b"#"R-#%a(BH`%;@-,7",c-#&%"(Z4
STATA
Se debe usar la funcin ,-"!&!#" del paquete O$,-<A9.
%#"#" *+ ,-"!&!#"./!"#$%R#"#"&!#"/4
1-"!.%#"#"4
55 @-,% @$%#,-7 #,-"# A-9!-, @,<$,<
55 B B FLKF&F G G G&BKGFG
55 F F FMJB&F G G G&BHJBB
55 I I FIJG&J G G G&BNGKF
55 L L IJFH&H G G G&GKIKN
55 N N MNK&H G G G&GNGNH
55 H H IJGN&I G G G&GHJGM
%#"#"s#,-"# *+ "%&O"'#$,.%#"#"s#,-"#4
5 %#"#" *+ #,"9%O$,7.%#"#"0 #,-"#2"%&O"'#$,.#,-"#44 ":#-,9"#<(" @","
5 '$9(-,#<, -9 O"'#$,-%
%#"#"sA-9!-, *+ "%&O"'#$,.%#"#"sA-9!-,4
55 QW#,"%0 %< n;-,-7$% " :$% O"'#$,-% '$9 -#<n;-#"%0 -9#$9'-%&&&
%#"#"sA-9!-, *+ O"'#$,.%#"#"sA-9!-,0 :"8-:% 2 './S;g-,/0 /l$78,-/44
%#"#"s#,-"# *+ O"'#$,.%#"#"s#,-"#0 :"8-:% 2 './V$9#,$:/0 /3,"#"!$/44
1-"!.%#"#"4
55 @-,% @$%#,-7 #,-"# A-9!-, @,<$,<
55 B B FLKF&F V$9#,$: S;g-, G&BKGFG
55 F F FMJB&F V$9#,$: S;g-, G&BHJBB
55 I I FIJG&J V$9#,$: S;g-, G&BNGKF
55 L L IJFH&H V$9#,$: S;g-, G&GKIKN
55 N N MNK&H V$9#,$: S;g-, G&GNGNH
55 H H IJGN&I V$9#,$: S;g-, G&GHJGM
Exportacin de datos
Para la exportacin de datos usaremos el conjunto de datos Cars.sav cuya descripcin se puede ver en esta pgina
http://rugbcn.wordpress.com/2012/10/08/963/
6
Exportacin de datos
Para la exportacin de datos usaremos el conjunto de datos Cars.sav cuya descripcin se puede ver en esta pgina
.
Primero hemos de importar los datos:
5 '",% *+
5 %@%%&A-#.Z1##@P``@-$@:-&'%#&'7<'1&-!;`:--B'`%@%%`XBHa7"#-,<":%`b"#"R-#%a(BH`V",%&%"(Z4
Una vez que te se tiene el !"#"&O,"7- pude exportar a distintos formatos.
CSV
5 Y,<#-&'%(.'",%0 Z'",%&'%(Z4
txt separado por tabulaciones
5 Y,<#-&#"8:-.'",%0 Z'",%&#W#Z0 %-@2Z\#Z4
Importante!!! R usa por defecto el Z&Z como separador de decimales, en Espaa se usa Z0Z como separador de decimales y Z&Z
como separador de miles Cmo arreglarlo? En excel, ir a Herramientas, Internacional.., Otra forma? Es posible hacerlo
directamente desde R? S, lo es! slo basta con indicarlo cuando se est exportando:
5 Y,<#-&'%(.'",%0 Z'",%&'%(Z0 !-'2Z0Z4
5 Y,<#-&#"8:-.'",%0 Z'",%&#W#Z0 %-@2Z\#Z0 !-'2Z0Z4 5 S;= Om'<:0 ur$t
Excel
No recomandable porque hay que cargar un paquete (OTRO!!) adicional.Se hace con la funcin _,<#-ieR del paquete _,<#-ieR
5 <9%#"::&@"'c"A-%.Z_,<#-ieRZ4
5 :<8,",=._,<#-ieR4
5 t_,<#-ieR 5 @"," (-, :" "=;!"&
SPSS
Con el paquete O$,-<A9
5 Y,<#-&O$,-<A9.'",%0 ZC<:-a%@%%&#W#Z0 ZV$!-a%@%%&%@%Z0 @"'c"A-2ZR>RRZ4
http://rugbcn.wordpress.com/2012/10/08/963/
7
Con el paquete O$,-<A9
5 Y,<#-&O$,-<A9.'",%0 ZC<:-a%@%%&#W#Z0 ZV$!-a%@%%&%@%Z0 @"'c"A-2ZR>RRZ4
Esto muestra qu ha generado R para que sea ledo por SPSS
5 O<:-&%1$Y.ZC<:-a%@%%&#W#Z4 O<:-&%1$Y.ZV$!-a%@%%&%@%Z4
STATA
5 Y,<#-&!#".'",%0 Z'",%&!#"Z4
MS INFORMACIN SOBRE IMPORTAR/EXPORTAR DATOS:
http://cran.r-project.org/doc/manuals/R-data.html
http://rugbcn.wordpress.com/2012/10/08/963/
8