R语言-读取文件

1. 纯文本文件

将数据表存储在纯文本文件中;
文本中每一行对应数据表的每一行;
每一行的不同元素用一些简单的符号进行分隔,常用的有逗号,空格,制表符等;
一个文件使用统一的分隔符
文件的扩展名一般为.txt;若文件中分隔符为逗号,则扩展名为.csv

  • read.table()函数

read.table(file, header = FALSE, sep = “”, row.names, col.names,na.strings = “NA”, nrows = -1, skip = 0, check.names = TRUE)
file:要从其中读取数据的文件的名称
header:一个逻辑值,指示文件是否在第一行包含变量的名称
sep:设置字段分隔符
row.names:由行名组成的向量。
col.names:变量的可选名称向量。
na.string:一个字符串向量,它被解释为NA值
nrows:整数:可读入的最大行数。负值和其他无效值将被忽略。
skip:整数:在开始读取数据之前要跳过的数据文件的行数。

当文件跟源程序在同一个文件夹下(即当前文件夹),可直接引用文件名

> read.table("input.txt")
    Ozone Solar.R Wind Temp Month Day
1      41     190  7.4   67     5   1
2      36     118  8.0   72     5   2
3      12     149 12.6   74     5   3
4      18     313 11.5   62     5   4
5      NA      NA 14.3   56     5   5
......
147     7      49 10.3   69     9  24
148    14      20 16.6   63     9  25
149    30     193  6.9   70     9  26
150    NA     145 13.2   77     9  27
151    14     191 14.3   75     9  28
152    18     131  8.0   76     9  29
153    20     223 11.5   68     9  30

可以用getwd()函数获取当前文件路径
可以用setwd()函数更改当前文件路径

#获取当前文件路径
> getwd()
[1] "E:/R-workplace/1"

#说明当前文件路径中没有input 1.txt这个文件
> read.table("input 1.txt")
Error in file(file, "rt") : 无法打开链结
此外: Warning message:
In file(file, "rt") : 无法打开文件'input 1.txt': No such file or directory

#更改当前文件路径

> setwd("E:/R-workplace/1/Rdata")
> read.table("input 1.txt")
    Ozone Solar.R Wind Temp Month Day
1      41     190  7.4   67     5   1
2      36     118  8.0   72     5   2
3      12     149 12.6   74     5   3
4      18     313 11.5   62     5   4
5      NA      NA 14.3   56     5   5
......
146    36     139 10.3   81     9  23
147     7      49 10.3   69     9  24
148    14      20 16.6   63     9  25
149    30     193  6.9   70     9  26
150    NA     145 13.2   77     9  27
151    14     191 14.3   75     9  28
152    18     131  8.0   76     9  29
153    20     223 11.5   68     9  30

文件不在当前文件夹,可用全路径

> read.table("E:/R-workplace/1/Rdata/input 1.txt")
    Ozone Solar.R Wind Temp Month Day
1      41     190  7.4   67     5   1
2      36     118  8.0   72     5   2
3      12     149 12.6   74     5   3
4      18     313 11.5   62     5   4
5      NA      NA 14.3   56     5   5
......
146    36     139 10.3   81     9  23
147     7      49 10.3   69     9  24
148    14      20 16.6   63     9  25
149    30     193  6.9   70     9  26
150    NA     145 13.2   77     9  27
151    14     191 14.3   75     9  28
152    18     131  8.0   76     9  29
153    20     223 11.5   68     9  30
  • head(x,n)函数,tail()函数

用来截取文件头部跟尾部固定的行数,默认为6行
n设置截取行数

> x <- read.table("E:/R-workplace/1/Rdata/input 1.txt")
> head(x)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> tail(x)
    Ozone Solar.R Wind Temp Month Day
148    14      20 16.6   63     9  25
149    30     193  6.9   70     9  26
150    NA     145 13.2   77     9  27
151    14     191 14.3   75     9  28
152    18     131  8.0   76     9  29
153    20     223 11.5   68     9  30

> head(x,10)
   Ozone Solar.R Wind Temp Month Day
1     41     190  7.4   67     5   1
2     36     118  8.0   72     5   2
3     12     149 12.6   74     5   3
4     18     313 11.5   62     5   4
5     NA      NA 14.3   56     5   5
6     28      NA 14.9   66     5   6
7     23     299  8.6   65     5   7
8     19      99 13.8   59     5   8
9      8      19 20.1   61     5   9
10    NA     194  8.6   69     5  10
> tail(x,10)
    Ozone Solar.R Wind Temp Month Day
144    13     238 12.6   64     9  21
145    23      14  9.2   71     9  22
146    36     139 10.3   81     9  23
147     7      49 10.3   69     9  24
148    14      20 16.6   63     9  25
149    30     193  6.9   70     9  26
150    NA     145 13.2   77     9  27
151    14     191 14.3   75     9  28
152    18     131  8.0   76     9  29
153    20     223 11.5   68     9  30

读取文件中任意的行数,利用参数nrows,skip


> x <- read.table("E:/R-workplace/1/Rdata/input 1.txt",nrows  = 12,skip = 32)
> x
   V1  V2  V3   V4 V5 V6 V7
1  27  NA  NA  8.0 57  5 27
2  28  23  13 12.0 67  5 28
3  29  45 252 14.9 81  5 29
4  30 115 223  5.7 79  5 30
5  31  37 279  7.4 76  5 31
6  32  NA 286  8.6 78  6  1
7  33  NA 287  9.7 74  6  2
8  34  NA 242 16.1 67  6  3
9  35  NA 186  9.2 84  6  4
10 36  NA 220  8.6 85  6  5
11 37  NA 264 14.3 79  6  6
12 38  29 127  9.7 82  6  7
  • read.csv函数:默认分隔符为逗号
  • read.delim:默认分隔符为制表符

2. 读取网络文件

将file参数的路径改为网络路径

3. 读取非文本文件

  • 读取html网页中的表格,采用XML程辑包
    HTML表格链接:http://match.sports.sina.com.cn/football/csl/opta_rank.php
> readHTMLTable("http://match.sports.sina.com.cn/football/csl/opta_rank.php")
$`NULL`
     V1           V2   V3 V4 V5 V6   V7   V8     V9  V10
1  排名         球队 场数 胜 平 负 进球 丢球 净胜球 积分
2     1     广州恒大   30 23  3  4   68   24     44   72
3     2     北京国安   30 23  1  6   60   26     34   70
4     3     上海上港   30 20  6  4   62   26     36   66
5     4     江苏苏宁   30 15  8  7   60   41     19   53
6     5     山东鲁能   30 15  6  9   55   35     20   51
7     6     武汉卓尔   30 12  8 10   41   41      0   44
8     7     天津泰达   30 12  5 13   43   45     -2   41
9     8     河南建业   30 11  8 11   41   46     -5   41
10    9       大连人   30 10  8 12   44   51     -7   38
11   10     重庆当代   30  9  9 12   36   47    -11   36
12   11 河北华夏幸福   30  9  6 15   37   55    -18   33
13   12     广州富力   30  9  5 16   54   72    -18   32
14   13     上海申花   30  8  6 16   43   57    -14   30
15   14     天津天海   30  4 13 13   40   53    -13   25
16   15   深圳佳兆业   30  4  9 17   31   57    -26   21
17   16     北京人和   30  3  5 22   26   65    -39   14

读取各种软件格式的包:foreign程辑包

4. 读取剪切板中的文件

  • readClipboard()函数:读取剪切板中的内容
> readClipboard()
[1] "http://match.sports.sina.com.cn/football/csl/opta_rank.php"
  • read.table(“clipboard”)函数:读取剪切板中的表格
> read.table("clipboard",header = T)
   排名         球队 场数 胜 平 负 进球 丢球 净胜球 积分
1     1     上海海港   14  8  4  2   30    7     23   28
2     1     山东泰山   14 10  3  1   30   10     20   33
3     2     长春亚泰   14  8  4  2   23   11     12   28
4     2       广州队   14  9  3  2   39   14     25   30
5     3     北京国安   14  7  3  4   19   16      3   24
6     3       深圳队   14  7  3  4   24   18      6   24
7     4       广州城   14  5  6  3   21   21      0   21
8     4       河北队   14  6  5  3   12   11      1   23
9     5     上海申花   14  6  4  4   21   17      4   22
10    5 河南嵩山龙门   14  4  6  4   13   14     -1   18
11    6 重庆两江竞技   14  3  2  9   16   28    -12   11
12    6       武汉队   14  1  8  5   11   19     -8   11
13    7     沧州雄狮   14  2  4  8   13   23    -10   10
14    7   天津津门虎   14  2  3  9   11   29    -18    9
15    8       大连人   14  2  1 11   12   29    -17    7
16    8       青岛队   14  2  1 11    6   34    -28    7

5. 其他

  • read.table()函数:直接读取压缩包里面的表格
> read.table("input.txt.zip")
    Ozone Solar.R Wind Temp Month Day
1      41     190  7.4   67     5   1
2      36     118  8.0   72     5   2
3      12     149 12.6   74     5   3
4      18     313 11.5   62     5   4
5      NA      NA 14.3   56     5   5
...
148    14      20 16.6   63     9  25
149    30     193  6.9   70     9  26
150    NA     145 13.2   77     9  27
151    14     191 14.3   75     9  28
152    18     131  8.0   76     9  29
153    20     223 11.5   68     9  30

> read.table("input.txt.gz")
                     X  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
1            Mazda RX4 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
2        Mazda RX4 Wag 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
3           Datsun 710 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
4       Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
5    Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
6              Valiant 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
7           Duster 360 14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
8            Merc 240D 24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
9             Merc 230 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
10            Merc 280 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
11           Merc 280C 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
12          Merc 450SE 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
13          Merc 450SL 17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
14         Merc 450SLC 15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
15  Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
16 Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
  • readLines()函数:读取数据中各行,并返回字符串

> readLines("input.txt")
  [1] "\"Ozone\" \"Solar.R\" \"Wind\" \"Temp\" \"Month\" \"Day\"" "\"1\" 41 190 7.4 67 5 1"                                  
  [3] "\"2\" 36 118 8 72 5 2"                                     "\"3\" 12 149 12.6 74 5 3"                                 
  [5] "\"4\" 18 313 11.5 62 5 4"                                  "\"5\" NA NA 14.3 56 5 5"                                  
  [7] "\"6\" 28 NA 14.9 66 5 6"                                   "\"7\" 23 299 8.6 65 5 7"                                  
  [9] "\"8\" 19 99 13.8 59 5 8"                                   "\"9\" 8 19 20.1 61 5 9"                                   
 [11] "\"10\" NA 194 8.6 69 5 10"                                 "\"11\" 7 NA 6.9 74 5 11"                                  
 [13] "\"12\" 16 256 9.7 69 5 12"                                 "\"13\" 11 290 9.2 66 5 13"                                
 [15] "\"14\" 14 274 10.9 68 5 14"                                "\"15\" 18 65 13.2 58 5 15"                                
 [17] "\"16\" 14 334 11.5 64 5 16"                                "\"17\" 34 307 12 66 5 17"                                 
 [19] "\"18\" 6 78 18.4 57 5 18"                                  "\"19\" 30 322 11.5 68 5 19"      
 ...
 [139] "\"138\" 13 112 11.5 71 9 15"                               "\"139\" 46 237 6.9 78 9 16"                               
[141] "\"140\" 18 224 13.8 67 9 17"                               "\"141\" 13 27 10.3 76 9 18"                               
[143] "\"142\" 24 238 10.3 68 9 19"                               "\"143\" 16 201 8 82 9 20"                                 
[145] "\"144\" 13 238 12.6 64 9 21"                               "\"145\" 23 14 9.2 71 9 22"                                
[147] "\"146\" 36 139 10.3 81 9 23"                               "\"147\" 7 49 10.3 69 9 24"                                
[149] "\"148\" 14 20 16.6 63 9 25"                                "\"149\" 30 193 6.9 70 9 26"                               
[151] "\"150\" NA 145 13.2 77 9 27"                               "\"151\" 14 191 14.3 75 9 28"                              
[153] "\"152\" 18 131 8 76 9 29"                                  "\"153\" 20 223 11.5 68 9 30"  

6. 读取excel文件

  • XLConnect包

该包依赖于Java环境,使用这个包时,电脑要配置Java的环境

  1. 两步法:使用包中的loadWorkbook()函数直接读取excel工作簿,用readWorksheet读取excel工作簿中指定的工作表
  2. 一步法:将两步法合成一步,使用readWorksheetFromFile()函数
> library("XLConnect")
> 
> 1. 两步法
> ex <- loadWorkbook("1.xls")
> readWorksheet(ex,1)
   Col1  站号 雨量.mm. 雨量.mm..1
1     1 G6913    143.3       30.9
2     2 G6823    100.2        8.7
3     3 G7041     84.3        1.5
4     4 G2209     54.7        0.0
5     5 G6816     53.5        0.2
...
26   26 G6915      5.3        0.5
27   27 G2271      4.9        0.0
28   28 G6835      4.1        0.0
29   29 G2223      4.1        0.0
30   30 G6808      4.0        0.0
31   31 G6963      3.3        0.0
32   32 G2221      3.2        0.0

2. 两步法

> readWorksheetFromFile("1.xls",1)
   Col1  站号 雨量.mm. 雨量.mm..1
1     1 G6913    143.3       30.9
2     2 G6823    100.2        8.7
3     3 G7041     84.3        1.5
4     4 G2209     54.7        0.0
5     5 G6816     53.5        0.2
...
26   26 G6915      5.3        0.5
27   27 G2271      4.9        0.0
28   28 G6835      4.1        0.0
29   29 G2223      4.1        0.0
30   30 G6808      4.0        0.0
31   31 G6963      3.3        0.0
32   32 G2221      3.2        0.0
  • xlsx包

电脑要在Java的环境下,下载xlsx包时要先下载rJava包

> installed.packages("rJava")
> library(rJava)
> install.packages("xlsx")
> library(xlsx)

read.xlsx(file,sheetIndex,sheetName,rowIndex,startRow,endRow…)
file:要读取的文件的路径。
sheetIndex:表示第几个工作表
sheet Name:表示工作表的名字
rowIndex:表示要提取的行
start Row:指定起始行索引的数字
endRow:指定要提取的最后一行的索引的数字


> read.xlsx("1.xls",1,startRow=5,endRow=20)
   X4 G2209 X54.7 X0.0
1   5 G6816  53.5  0.2
2   6 G7024  52.1  8.9
3   7 G7032  43.8  0.0
4   8 59480  35.1  0.0
5   9 G7031  35.0  0.4
6  10 G6903  31.8  0.0
7  11 G6859  12.0 38.4
8  12 G2224  11.9  0.0
9  13 G6942  11.5  3.4
10 14 G7005   9.8  0.0
11 15 G7003   9.3  0.0
12 16 G2222   9.0  0.0
13 17 G6910   7.3  0.1
14 18 G7009   7.0  0.0
15 19 G6906   6.6  0.3

7. 读取R格式文件

存储为R文件会有很多优势,R会对存储为内部文件格式的数据进行自动压缩处理,并且会存储所有与带存储对象相关的R元数据。
如果数据中包含了因子,日期和时间或者类的属性等信息,存储为R格式更为实用
R格式的文件只能用R进行读写

  • RDS文件:用来保存R的单个对象
> iris <- readRDS("E:/R-workplace/1/iris.RDS")
> iris
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa
5            5.0         3.6          1.4         0.2     setosa
...
145          6.7         3.3          5.7         2.5  virginica
146          6.7         3.0          5.2         2.3  virginica
147          6.3         2.5          5.0         1.9  virginica
148          6.5         3.0          5.2         2.0  virginica
149          6.2         3.4          5.4         2.3  virginica
150          5.9         3.0          5.1         1.8  virginica
  • RData文件:可以存储更多R的对象,用load()直接加载RData文件
> load(".RData")

你可能感兴趣的:(R语言,r语言)