vlambda博客
学习文章列表

【软件】R语言数据导入与导出


     

R语言导入文本和xlsx文件数据的方法,以及数据与图片的输出




许多数据往往保存在TXT文件或Excel文件中,该如何将这些文件导入R语言进行分析呢?另外,使用R语言处理完数据之后,我们希望导出一些有用的信息,那么如何将R语言的数据处理结果输出为文档呢?本文将就这些问题展开介绍。








01


数据导入



   R语言变量编辑


使用x<-edit(x)命令可以像操作Excel表格一样可以修改x,fix(x)命令具有相同的效果


> x<-c(1:10)> y<-rep(c("a","b","c","d","e"),time=2)
> z<-seq(from=1,to=20,length=10)> u<-c(rep(c(0),5),rep(c(1),5))> tp<-data.frame(x,y,z,u)> tp x y z u1 1 a 1.000000 02 2 b 3.111111 03 3 c 5.222222 04 4 d 7.333333 05 5 e 9.444444 06 6 a 11.555556 17 7 b 13.666667 18 8 c 15.777778 19 9 d 17.888889 110 10 e 20.000000 1> tp<-edit(tp)> tp x y z u1 1212 a 1.000000 02 2 b 3.111111 03 3 c 100.000000 04 4 d 7.333333 05 5 e 9.444444 06 6 a 11.555556 17 7 b 13.666667 18 8 c 15.777778 19 9 d 17.888889 110 10 e 20.000000 1



数据框是经常被使用的数据类型,确定一些名称有助于更清晰地使用数据框来描述问题。从统计学的角度来看,数据框的names属性(列名)可与随机变量对应,称为变量;每一行数据表示一个观测。比如下面这个数据框是某个国家年份、GDP和进口总额的虚拟数据,那么年份、GDP和进口总额可以看成随机变量,某一年的年份、GDP和进口总额的具体数值是变量的一个观测。


> t year GDP Import1 1938 0.2915333 0.197032932 1955 0.7966871 0.838777353 1912 0.3986460 0.720027364 2009 0.1496753 0.819794995 1962 0.2403113 0.234739266 1915 0.9429419 0.664063477 1987 0.2029664 0.216788478 1969 0.5775884 0.599148999 1981 0.2875719 0.1600697310 1982 0.3809945 0.1137205911 1918 0.9387558 0.3700419612 1978 0.2744623 0.3008766813 1947 0.2658890 0.8451930514 1997 0.3698511 0.0171419415 1988 0.7091464 0.5371240416 1983 0.6364550 0.8894114817 2011 0.3433975 0.0930350718 1924 0.2795570 0.7673857419 1964 0.1630461 0.0449098320 1984 0.4498338 0.3731178021 1959 0.9201049 0.24790287



   read.table()导入文本文档数据


read.table()函数是R语言导入文件最重要的方法之一,它有一个很长的参数表,可以实现各种自定义的文件导入方式。下面我们将要讨论的是最常用的一些参数的设置方法,若想了解更详尽的参数设置方法可查看帮助文档。


1)只有路径


对于如下TXT文档,使用read.table(“路径”)命令,可将整个TXT文档中的数据导入R语言的数据框变量中。生成的数据框的变量名是默认的v1、v2、v3,TXT文档中第一行数据Year、GDP和Import被认为是一个观测。



【软件】R语言数据导入与导出


> > t<-read.table("G:/Rcode/project1/GDP.txt")> t V1 V2 V31 Year GDP Import2 1989 17179.7 2199.93 1990 18872.9 2574.34 1991 22005.6 3398.75 1992 27194.5 4443.36 1993 35673.2 5986.27 1994 48637.5 9960.18 1995 61338.9 11048.19 1996 71813.6 11557.410 1997 79715.0 11806.511 1998 85195.5 11626.112 1999 90564.4 13736.413 2000 100280.1 18638.814 2001 110863.1 20159.215 2002 121717.4 24430.316 2003 137422.0 34195.617 2004 161840.2 46435.818 2005 187318.9 54273.719 2006 219438.5 63376.920 2007 270232.3 73284.621 2008 319515.5 79526.522 2009 349081.4 68618.423 2010 413030.3 94699.324 2011 489300.6 113161.425 2012 540367.4 114801.026 2013 595244.4 121037.527 2014 643974.0 120358.028 2015 685505.8 104336.1> class(t)[1] "data.frame"


2)路径+header


设置header参数为TRUE值,将会把第一行看成变量而不是一个观测。


> t<-read.table("G:/Rcode/project1/GDP.txt",header=TRUE)> t Year GDP Import1 1989 17179.7 2199.92 1990 18872.9 2574.33 1991 22005.6 3398.74 1992 27194.5 4443.35 1993 35673.2 5986.26 1994 48637.5 9960.17 1995 61338.9 11048.18 1996 71813.6 11557.49 1997 79715.0 11806.510 1998 85195.5 11626.111 1999 90564.4 13736.412 2000 100280.1 18638.813 2001 110863.1 20159.214 2002 121717.4 24430.315 2003 137422.0 34195.616 2004 161840.2 46435.817 2005 187318.9 54273.718 2006 219438.5 63376.919 2007 270232.3 73284.620 2008 319515.5 79526.521 2009 349081.4 68618.422 2010 413030.3 94699.323 2011 489300.6 113161.424 2012 540367.4 114801.025 2013 595244.4 121037.526 2014 643974.0 120358.027 2015 685505.8 104336.1


3) 路径+header+skip


当TXT文档开头包含一些无用的信息的时候,设置skip参数可以跳过这些信息。参数skip=num,num表示希望跳过的行数。



【软件】R语言数据导入与导出


> t<-read.table("G:/Rcode/project1/GDP.txt",header=TRUE,skip=10)> t Year GDP Import1 1989 17179.7 2199.92 1990 18872.9 2574.33 1991 22005.6 3398.74 1992 27194.5 4443.35 1993 35673.2 5986.26 1994 48637.5 9960.17 1995 61338.9 11048.18 1996 71813.6 11557.49 1997 79715.0 11806.510 1998 85195.5 11626.111 1999 90564.4 13736.412 2000 100280.1 18638.813 2001 110863.1 20159.214 2002 121717.4 24430.315 2003 137422.0 34195.616 2004 161840.2 46435.817 2005 187318.9 54273.718 2006 219438.5 63376.919 2007 270232.3 73284.620 2008 319515.5 79526.521 2009 349081.4 68618.422 2010 413030.3 94699.323 2011 489300.6 113161.424 2012 540367.4 114801.025 2013 595244.4 121037.526 2014 643974.0 120358.027 2015 685505.8 104336.1


4) 路径+header+skip+nrows


设置nrows参数可以控制导入数据的行数,参数nrows=num表示要导入num行数据。


> t<-read.table("G:/Rcode/project1/GDP.txt",header=TRUE,skip=10,nrows=3)> t Year GDP Import1 1989 17179.7 2199.92 1990 18872.9 2574.33 1991 22005.6 3398.7



   openxlsx包导入xlsx文档


首先使用install.packages("openxlsx")命令安装openxlsx包,然后使用library(openxlsx)命令导入这个包,接着就可以使用read.xlsx()命令来读取Excel文件数据了,返回值也是一个数据框类型。


同样地,read.xlsx()命令也有很长的参数表,下面是两个常用的情形。


1)只有路径


read.xlsx()自动识别第一行作为变量名,另外read.xlsx()还自动跳跃空行,也就是说即使数据从B2单元格开始也能得到同样的结果。


【软件】R语言数据导入与导出


 year GDP Import1 1938 0.2915333 0.197032932 1955 0.7966871 0.838777353 1912 0.3986460 0.720027364 2009 0.1496753 0.819794995 1962 0.2403113 0.234739266 1915 0.9429419 0.664063477 1987 0.2029664 0.216788478 1969 0.5775884 0.599148999 1981 0.2875719 0.1600697310 1982 0.3809945 0.1137205911 1918 0.9387558 0.3700419612 1978 0.2744623 0.3008766813 1947 0.2658890 0.8451930514 1997 0.3698511 0.0171419415 1988 0.7091464 0.5371240416 1983 0.6364550 0.8894114817 2011 0.3433975 0.0930350718 1924 0.2795570 0.7673857419 1964 0.1630461 0.0449098320 1984 0.4498338 0.3731178021 1959 0.9201049 0.24790287> class(dataf)[1] "data.frame"



2)路径+rows+cols


rows参数和cols参数是数字向量,可以控制导入哪些行和哪些列。


【软件】R语言数据导入与导出


> dataf<-read.xlsx("G:/Rcode/project1/data.xlsx",rows=c(2:4),cols=c(2:3))> dataf Year GDP1 1938 0.29153332 1955 0.7966871










02


数据导出



   导出到屏幕


1)文本


①直接输入变量名,执行

> dataf Year GDP1 1938 0.29153332 1955 0.7966871


②print()函数


> print(dataf) Year GDP1 1938 0.29153332 1955 0.7966871>


2)图形


①覆盖原来的图形


执行两次plot()绘图操作,第二次绘图将会覆盖原来的图形。Rgui中菜单栏的history命令提供查看绘图历史的功能,前提是要开启recording。


> x<-seq(1,10,0.1)> plot(x,sin(x))> plot(x,log(x))


②多个绘图窗口


如果希望每次绘图都新生成一个绘图窗口,而不改变原来的图形,可使用dev.new()命令。


> plot(x,log(x))> dev.new()> plot(x,sin(x))> dev.new()> plot(x,sin(x))

【软件】R语言数据导入与导出




   导出文本到外部文档


1)文本


①写入TXT文档


执行sink("TXT路径")命令,能够将原本打印到屏幕文本信息输出到指定的TXT文档,在这种状态下默认不再输出到屏幕上,执行sink()命令可以取消这种写入状态。


> x<-c(1:10)> y<-sin(x)> z<-rep(c("a","e"),5)> df<-data.frame(x=x,sin_x=y,char=z)> df x sin_x char1 1 0.8414710 a2 2 0.9092974 e3 3 0.1411200 a4 4 -0.7568025 e5 5 -0.9589243 a6 6 -0.2794155 e7 7 0.6569866 a8 8 0.9893582 e9 9 0.4121185 a10 10 -0.5440211 e> sink("G:/Rcode/temp.txt")> df> print(rep(c("&"),50))> print("This print contains a dataframe")> sink()> df x sin_x char1 1 0.8414710 a2 2 0.9092974 e3 3 0.1411200 a4 4 -0.7568025 e5 5 -0.9589243 a6 6 -0.2794155 e7 7 0.6569866 a8 8 0.9893582 e9 9 0.4121185 a10 10 -0.5440211 e> 


【软件】R语言数据导入与导出



②将变量信息写入xlsx文档


使用openxlsx中的write.xlsx()方法可以将变量输入xlsx文档中,最简单的参数设置方法是write.xlsx(x,“xlsx路径”),执行后可将x变量中的信息导出到指定的xlsx文档中。


> df x sin_x char1 1 0.8414710 a2 2 0.9092974 e3 3 0.1411200 a4 4 -0.7568025 e5 5 -0.9589243 a6 6 -0.2794155 e7 7 0.6569866 a8 8 0.9893582 e9 9 0.4121185 a10 10 -0.5440211 e> library(openxlsx)> write.xlsx(df,"G:/Rcode/temp.xlsx")


【软件】R语言数据导入与导出



2)图形


①导出到pdf文档


pdf(“pdf路径”)命令可以将多个图片导出到指定的pdf文档中,若要停止导出状态,执行dev.off()命令即可。


> x<-seq(1,10,0.1)> pdf("G:/Rcode/temp.pdf")> plot(x,sin(x))> plot(x,exp(x))> plot(x,log(x))> dev.off()pdf  2 > 



上述命令将生成一个pdf文档,每页包含一个图形。



【软件】R语言数据导入与导出



②导出到图片


将图形导出到图片的方法可以是png("png路径")、tiff("tiff路径")、bmp("bmp路径")等类似的函数,使用dev.off()命令可中止导出。


> png("G:/Rcode/temp.png")> plot(x,sin(x))> dev.off()null device  1 > tiff("G:/Rcode/temp.tiff")> plot(x,exp(x))> dev.off()null device  1 > bmp("G:/Rcode/temp.bmp")> plot(x,x)> dev.off()null device  1 > 


【软件】R语言数据导入与导出