【软件】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 u
1 1 a 1.000000 0
2 2 b 3.111111 0
3 3 c 5.222222 0
4 4 d 7.333333 0
5 5 e 9.444444 0
6 6 a 11.555556 1
7 7 b 13.666667 1
8 8 c 15.777778 1
9 9 d 17.888889 1
10 10 e 20.000000 1
tp<-edit(tp)
tp
x y z u
1 1212 a 1.000000 0
2 2 b 3.111111 0
3 3 c 100.000000 0
4 4 d 7.333333 0
5 5 e 9.444444 0
6 6 a 11.555556 1
7 7 b 13.666667 1
8 8 c 15.777778 1
9 9 d 17.888889 1
10 10 e 20.000000 1
数据框是经常被使用的数据类型,确定一些名称有助于更清晰地使用数据框来描述问题。从统计学的角度来看,数据框的names属性(列名)可与随机变量对应,称为变量;每一行数据表示一个观测。比如下面这个数据框是某个国家年份、GDP和进口总额的虚拟数据,那么年份、GDP和进口总额可以看成随机变量,某一年的年份、GDP和进口总额的具体数值是变量的一个观测。
> t
year GDP Import
1 1938 0.2915333 0.19703293
2 1955 0.7966871 0.83877735
3 1912 0.3986460 0.72002736
4 2009 0.1496753 0.81979499
5 1962 0.2403113 0.23473926
6 1915 0.9429419 0.66406347
7 1987 0.2029664 0.21678847
8 1969 0.5775884 0.59914899
9 1981 0.2875719 0.16006973
10 1982 0.3809945 0.11372059
11 1918 0.9387558 0.37004196
12 1978 0.2744623 0.30087668
13 1947 0.2658890 0.84519305
14 1997 0.3698511 0.01714194
15 1988 0.7091464 0.53712404
16 1983 0.6364550 0.88941148
17 2011 0.3433975 0.09303507
18 1924 0.2795570 0.76738574
19 1964 0.1630461 0.04490983
20 1984 0.4498338 0.37311780
21 1959 0.9201049 0.24790287
read.table()导入文本文档数据
read.table()函数是R语言导入文件最重要的方法之一,它有一个很长的参数表,可以实现各种自定义的文件导入方式。下面我们将要讨论的是最常用的一些参数的设置方法,若想了解更详尽的参数设置方法可查看帮助文档。
1)只有路径
对于如下TXT文档,使用read.table(“路径”)命令,可将整个TXT文档中的数据导入R语言的数据框变量中。生成的数据框的变量名是默认的v1、v2、v3,TXT文档中第一行数据Year、GDP和Import被认为是一个观测。
> t<-read.table("G:/Rcode/project1/GDP.txt")
t
V1 V2 V3
1 Year GDP Import
2 1989 17179.7 2199.9
3 1990 18872.9 2574.3
4 1991 22005.6 3398.7
5 1992 27194.5 4443.3
6 1993 35673.2 5986.2
7 1994 48637.5 9960.1
8 1995 61338.9 11048.1
9 1996 71813.6 11557.4
10 1997 79715.0 11806.5
11 1998 85195.5 11626.1
12 1999 90564.4 13736.4
13 2000 100280.1 18638.8
14 2001 110863.1 20159.2
15 2002 121717.4 24430.3
16 2003 137422.0 34195.6
17 2004 161840.2 46435.8
18 2005 187318.9 54273.7
19 2006 219438.5 63376.9
20 2007 270232.3 73284.6
21 2008 319515.5 79526.5
22 2009 349081.4 68618.4
23 2010 413030.3 94699.3
24 2011 489300.6 113161.4
25 2012 540367.4 114801.0
26 2013 595244.4 121037.5
27 2014 643974.0 120358.0
28 2015 685505.8 104336.1
class(t)
"data.frame"
2)路径+header
设置header参数为TRUE值,将会把第一行看成变量而不是一个观测。
t<-read.table("G:/Rcode/project1/GDP.txt",header=TRUE)
t
Year GDP Import
1 1989 17179.7 2199.9
2 1990 18872.9 2574.3
3 1991 22005.6 3398.7
4 1992 27194.5 4443.3
5 1993 35673.2 5986.2
6 1994 48637.5 9960.1
7 1995 61338.9 11048.1
8 1996 71813.6 11557.4
9 1997 79715.0 11806.5
10 1998 85195.5 11626.1
11 1999 90564.4 13736.4
12 2000 100280.1 18638.8
13 2001 110863.1 20159.2
14 2002 121717.4 24430.3
15 2003 137422.0 34195.6
16 2004 161840.2 46435.8
17 2005 187318.9 54273.7
18 2006 219438.5 63376.9
19 2007 270232.3 73284.6
20 2008 319515.5 79526.5
21 2009 349081.4 68618.4
22 2010 413030.3 94699.3
23 2011 489300.6 113161.4
24 2012 540367.4 114801.0
25 2013 595244.4 121037.5
26 2014 643974.0 120358.0
27 2015 685505.8 104336.1
3) 路径+header+skip
当TXT文档开头包含一些无用的信息的时候,设置skip参数可以跳过这些信息。参数skip=num,num表示希望跳过的行数。
t<-read.table("G:/Rcode/project1/GDP.txt",header=TRUE,skip=10)
t
Year GDP Import
1 1989 17179.7 2199.9
2 1990 18872.9 2574.3
3 1991 22005.6 3398.7
4 1992 27194.5 4443.3
5 1993 35673.2 5986.2
6 1994 48637.5 9960.1
7 1995 61338.9 11048.1
8 1996 71813.6 11557.4
9 1997 79715.0 11806.5
10 1998 85195.5 11626.1
11 1999 90564.4 13736.4
12 2000 100280.1 18638.8
13 2001 110863.1 20159.2
14 2002 121717.4 24430.3
15 2003 137422.0 34195.6
16 2004 161840.2 46435.8
17 2005 187318.9 54273.7
18 2006 219438.5 63376.9
19 2007 270232.3 73284.6
20 2008 319515.5 79526.5
21 2009 349081.4 68618.4
22 2010 413030.3 94699.3
23 2011 489300.6 113161.4
24 2012 540367.4 114801.0
25 2013 595244.4 121037.5
26 2014 643974.0 120358.0
27 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 Import
1 1989 17179.7 2199.9
2 1990 18872.9 2574.3
3 1991 22005.6 3398.7
openxlsx包导入xlsx文档
首先使用install.packages("openxlsx")命令安装openxlsx包,然后使用library(openxlsx)命令导入这个包,接着就可以使用read.xlsx()命令来读取Excel文件数据了,返回值也是一个数据框类型。
同样地,read.xlsx()命令也有很长的参数表,下面是两个常用的情形。
1)只有路径
read.xlsx()自动识别第一行作为变量名,另外read.xlsx()还自动跳跃空行,也就是说即使数据从B2单元格开始也能得到同样的结果。
year GDP Import
1 1938 0.2915333 0.19703293
2 1955 0.7966871 0.83877735
3 1912 0.3986460 0.72002736
4 2009 0.1496753 0.81979499
5 1962 0.2403113 0.23473926
6 1915 0.9429419 0.66406347
7 1987 0.2029664 0.21678847
8 1969 0.5775884 0.59914899
9 1981 0.2875719 0.16006973
10 1982 0.3809945 0.11372059
11 1918 0.9387558 0.37004196
12 1978 0.2744623 0.30087668
13 1947 0.2658890 0.84519305
14 1997 0.3698511 0.01714194
15 1988 0.7091464 0.53712404
16 1983 0.6364550 0.88941148
17 2011 0.3433975 0.09303507
18 1924 0.2795570 0.76738574
19 1964 0.1630461 0.04490983
20 1984 0.4498338 0.37311780
21 1959 0.9201049 0.24790287
> class(dataf)
[1] "data.frame"
2)路径+rows+cols
rows参数和cols参数是数字向量,可以控制导入哪些行和哪些列。
dataf<-read.xlsx("G:/Rcode/project1/data.xlsx",rows=c(2:4),cols=c(2:3))
dataf
Year GDP
1 1938 0.2915333
2 1955 0.7966871
02
—
数据导出
导出到屏幕
1)文本
①直接输入变量名,执行
dataf
Year GDP
1 1938 0.2915333
2 1955 0.7966871
②print()函数
print(dataf)
Year GDP
1 1938 0.2915333
2 1955 0.7966871
2)图形
①覆盖原来的图形
执行两次plot()绘图操作,第二次绘图将会覆盖原来的图形。Rgui中菜单栏的history命令提供查看绘图历史的功能,前提是要开启recording。
> x<-seq(1,10,0.1)
> plot(x,sin(x))
> plot(x,log(x))
②多个绘图窗口
如果希望每次绘图都新生成一个绘图窗口,而不改变原来的图形,可使用dev.new()命令。
log(x)) plot(x,
dev.new()
plot(x,sin(x))
dev.new()
plot(x,sin(x))
导出文本到外部文档
1)文本
①写入TXT文档
执行sink("TXT路径")命令,能够将原本打印到屏幕文本信息输出到指定的TXT文档,在这种状态下默认不再输出到屏幕上,执行sink()命令可以取消这种写入状态。
x<-c(1:10)
y<-sin(x)
"a","e"),5) z<-rep(c(
df<-data.frame(x=x,sin_x=y,char=z)
df
x sin_x char
1 1 0.8414710 a
2 2 0.9092974 e
3 3 0.1411200 a
4 4 -0.7568025 e
5 5 -0.9589243 a
6 6 -0.2794155 e
7 7 0.6569866 a
8 8 0.9893582 e
9 9 0.4121185 a
10 10 -0.5440211 e
"G:/Rcode/temp.txt") sink(
df
print(rep(c("&"),50))
print("This print contains a dataframe")
sink()
df
x sin_x char
1 1 0.8414710 a
2 2 0.9092974 e
3 3 0.1411200 a
4 4 -0.7568025 e
5 5 -0.9589243 a
6 6 -0.2794155 e
7 7 0.6569866 a
8 8 0.9893582 e
9 9 0.4121185 a
10 10 -0.5440211 e
②将变量信息写入xlsx文档
使用openxlsx中的write.xlsx()方法可以将变量输入xlsx文档中,最简单的参数设置方法是write.xlsx(x,“xlsx路径”),执行后可将x变量中的信息导出到指定的xlsx文档中。
df
x sin_x char
1 1 0.8414710 a
2 2 0.9092974 e
3 3 0.1411200 a
4 4 -0.7568025 e
5 5 -0.9589243 a
6 6 -0.2794155 e
7 7 0.6569866 a
8 8 0.9893582 e
9 9 0.4121185 a
10 10 -0.5440211 e
library(openxlsx)
write.xlsx(df,"G:/Rcode/temp.xlsx")
2)图形
①导出到pdf文档
pdf(“pdf路径”)命令可以将多个图片导出到指定的pdf文档中,若要停止导出状态,执行dev.off()命令即可。
x<-seq(1,10,0.1)
"G:/Rcode/temp.pdf") pdf(
plot(x,sin(x))
plot(x,exp(x))
log(x)) plot(x,
dev.off()
2
上述命令将生成一个pdf文档,每页包含一个图形。
②导出到图片
将图形导出到图片的方法可以是png("png路径")、tiff("tiff路径")、bmp("bmp路径")等类似的函数,使用dev.off()命令可中止导出。
"G:/Rcode/temp.png") png(
plot(x,sin(x))
dev.off()
null device
1
"G:/Rcode/temp.tiff") tiff(
plot(x,exp(x))
dev.off()
null device
1
"G:/Rcode/temp.bmp") bmp(
plot(x,x)
dev.off()
null device
1