可视化参数RR语言学习

R语言学习笔记(11)-数据获取、读入&写入

2021-01-23  本文已影响0人  Akuooo

参考视频:(28 29 30)
https://www.bilibili.com/video/BV19x411X7C6?p=28
https://www.bilibili.com/video/BV19x411X7C6?p=29

一、获取数据

  1. 三种途径
    (1)利用键盘来输入数据
    eg.输入病例数据


    病例数据.png
#每一列用一个变量存储起来
> patientID <- c(1,2,3,4)
> admdate <- c("10/15/2009","11/01/2009","10/21/2009","10/28/2009")
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
#生成数据框
> data <- data.frame(patientID, age, diabetes, status)
> data
  patientID age diabetes    status
1         1  25    Type1      Poor
2         2  34    Type2  Improved
3         3  28    Type1 Excellent
4         4  52    Type1      Poor

edit():自动调用一个允许手动输入的文本编辑器。需要首先定义一个变量,然后用edit()修改这个变量,否则输入的数据无法保存

> data2 <- data.frame(patientID=character(0), age=numeric(0),
+                     diabetes=character(), status=character())
> data2 <- edit(data2)
数据编辑器.png
将数据输入到编辑框中,编辑完成后关闭即可,数据便会保存到刚才的变量中。
若没有提前定义变量,数据便无法保存
若是在Linux系统下,则会打开vim编辑器,用空格分隔即可。

如果想修改数据,再调用edit,修改后赋值给原变量即可
fix()函数也可修改,可直接保存
(2)通过读取存储在外部文件上的数据
利用R读取的文件,最好是经过处理适合R使用的文件。可利用Python、Perl来对数据进行预处理,然后将统计结果导入R进行分析。
(3)通过访问数据库系统来获取数据
在R中,可通过ODBC(open database connectivity)访问数据库。可用R读取数据库内容,同时还可将R处理后的结果写入到数据库内。
还可通过DBI包访问数据库,可实现通过驱动程序连接至数据库,为不同数据库提供了一种通用语法。
要使用某种数据库,需要下载其与DBI相连的包才能使用。

> install.packages("RODBC")

二、读入文件

1.read.table


read.table.png
readinput.png

(1)file

#纯文本文件 .txt
>read.table("input.txt")
#读入文件
> x <- read.table("input.txt")//R默认给每一行添加行号
#文件内容较大,可使用head()、tail()来截取文件头部和尾部固定行数,默认为六行。
> 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, n = 10)
> head(x,n = 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
#若文件不在该目录下,可使用全路径(绝对or相对路径),必须是完整文件路径,无法读取目录

(2)sep指定分隔符

> x <- read.table("input.csv")
#不设置,则很乱
> x
                    V1
1                     
2            Mazda RX4
3        Mazda RX4 Wag
4           Datsun 710
5       Hornet 4 Drive
6    Hornet Sportabout
7              Valiant
8           Duster 360
9            Merc 240D
10            Merc 230
11            Merc 280
12           Merc 280C
13          Merc 450SE
14          Merc 450SL
15         Merc 450SLC
16  Cadillac Fleetwood
17 Lincoln Continental
18   Chrysler Imperial
19            Fiat 128
20         Honda Civic
21      Toyota Corolla
22       Toyota Corona
23    Dodge Challenger
24         AMC Javelin
25          Camaro Z28
26    Pontiac Firebird
27           Fiat X1-9
28       Porsche 914-2
29        Lotus Europa
30      Ford Pantera L
31        Ferrari Dino
32       Maserati Bora
33          Volvo 142E
                                                                    V2
1  ,"mpg","cyl","disp","hp","drat","wt","qsec","vs","am","gear","carb"
2                                 ,21,6,160,110,3.9,2.62,16.46,0,1,4,4
3                                ,21,6,160,110,3.9,2.875,17.02,0,1,4,4
4                               ,22.8,4,108,93,3.85,2.32,18.61,1,1,4,1
5                             ,21.4,6,258,110,3.08,3.215,19.44,1,0,3,1
6                              ,18.7,8,360,175,3.15,3.44,17.02,0,0,3,2
7                              ,18.1,6,225,105,2.76,3.46,20.22,1,0,3,1
8                              ,14.3,8,360,245,3.21,3.57,15.84,0,0,3,4
9                                ,24.4,4,146.7,62,3.69,3.19,20,1,0,4,2
10                             ,22.8,4,140.8,95,3.92,3.15,22.9,1,0,4,2
11                            ,19.2,6,167.6,123,3.92,3.44,18.3,1,0,4,4
12                            ,17.8,6,167.6,123,3.92,3.44,18.9,1,0,4,4
13                            ,16.4,8,275.8,180,3.07,4.07,17.4,0,0,3,3
14                            ,17.3,8,275.8,180,3.07,3.73,17.6,0,0,3,3
15                              ,15.2,8,275.8,180,3.07,3.78,18,0,0,3,3
16                             ,10.4,8,472,205,2.93,5.25,17.98,0,0,3,4
17                               ,10.4,8,460,215,3,5.424,17.82,0,0,3,4
18                            ,14.7,8,440,230,3.23,5.345,17.42,0,0,3,4
19                              ,32.4,4,78.7,66,4.08,2.2,19.47,1,1,4,1
20                            ,30.4,4,75.7,52,4.93,1.615,18.52,1,1,4,2
21                             ,33.9,4,71.1,65,4.22,1.835,19.9,1,1,4,1
22                            ,21.5,4,120.1,97,3.7,2.465,20.01,1,0,3,1
23                             ,15.5,8,318,150,2.76,3.52,16.87,0,0,3,2
24                             ,15.2,8,304,150,3.15,3.435,17.3,0,0,3,2
25                             ,13.3,8,350,245,3.73,3.84,15.41,0,0,3,4
26                            ,19.2,8,400,175,3.08,3.845,17.05,0,0,3,2
27                               ,27.3,4,79,66,4.08,1.935,18.9,1,1,4,1
28                               ,26,4,120.3,91,4.43,2.14,16.7,0,1,5,2
29                            ,30.4,4,95.1,113,3.77,1.513,16.9,1,1,5,2
30                              ,15.8,8,351,264,4.22,3.17,14.5,0,1,5,4
31                              ,19.7,6,145,175,3.62,2.77,15.5,0,1,5,6
32                                ,15,8,301,335,3.54,3.57,14.6,0,1,5,8
33                              ,21.4,4,121,109,4.11,2.78,18.6,1,1,4,2
> x <- read.table("input.csv",sep = ",")
> x
                    V1   V2  V3    V4  V5   V6    V7    V8 V9 V10  V11  V12
1                       mpg cyl  disp  hp drat    wt  qsec vs  am gear carb
2            Mazda RX4   21   6   160 110  3.9  2.62 16.46  0   1    4    4
3        Mazda RX4 Wag   21   6   160 110  3.9 2.875 17.02  0   1    4    4
4           Datsun 710 22.8   4   108  93 3.85  2.32 18.61  1   1    4    1
5       Hornet 4 Drive 21.4   6   258 110 3.08 3.215 19.44  1   0    3    1
6    Hornet Sportabout 18.7   8   360 175 3.15  3.44 17.02  0   0    3    2
7              Valiant 18.1   6   225 105 2.76  3.46 20.22  1   0    3    1
8           Duster 360 14.3   8   360 245 3.21  3.57 15.84  0   0    3    4
9            Merc 240D 24.4   4 146.7  62 3.69  3.19    20  1   0    4    2
10            Merc 230 22.8   4 140.8  95 3.92  3.15  22.9  1   0    4    2
11            Merc 280 19.2   6 167.6 123 3.92  3.44  18.3  1   0    4    4
12           Merc 280C 17.8   6 167.6 123 3.92  3.44  18.9  1   0    4    4
13          Merc 450SE 16.4   8 275.8 180 3.07  4.07  17.4  0   0    3    3
14          Merc 450SL 17.3   8 275.8 180 3.07  3.73  17.6  0   0    3    3
15         Merc 450SLC 15.2   8 275.8 180 3.07  3.78    18  0   0    3    3
16  Cadillac Fleetwood 10.4   8   472 205 2.93  5.25 17.98  0   0    3    4
17 Lincoln Continental 10.4   8   460 215    3 5.424 17.82  0   0    3    4
18   Chrysler Imperial 14.7   8   440 230 3.23 5.345 17.42  0   0    3    4
19            Fiat 128 32.4   4  78.7  66 4.08   2.2 19.47  1   1    4    1
20         Honda Civic 30.4   4  75.7  52 4.93 1.615 18.52  1   1    4    2
21      Toyota Corolla 33.9   4  71.1  65 4.22 1.835  19.9  1   1    4    1
22       Toyota Corona 21.5   4 120.1  97  3.7 2.465 20.01  1   0    3    1
23    Dodge Challenger 15.5   8   318 150 2.76  3.52 16.87  0   0    3    2
24         AMC Javelin 15.2   8   304 150 3.15 3.435  17.3  0   0    3    2
25          Camaro Z28 13.3   8   350 245 3.73  3.84 15.41  0   0    3    4
26    Pontiac Firebird 19.2   8   400 175 3.08 3.845 17.05  0   0    3    2
27           Fiat X1-9 27.3   4    79  66 4.08 1.935  18.9  1   1    4    1
28       Porsche 914-2   26   4 120.3  91 4.43  2.14  16.7  0   1    5    2
29        Lotus Europa 30.4   4  95.1 113 3.77 1.513  16.9  1   1    5    2
30      Ford Pantera L 15.8   8   351 264 4.22  3.17  14.5  0   1    5    4
31        Ferrari Dino 19.7   6   145 175 3.62  2.77  15.5  0   1    5    6
32       Maserati Bora   15   8   301 335 3.54  3.57  14.6  0   1    5    8
33          Volvo 142E 21.4   4   121 109 4.11  2.78  18.6  1   1    4    2

(3)header 若第一行是变量名称,header = TRUE

> read.table("input 1.txt",header = TRUE)

(4)skip 控制从哪一行开始读

read.table("input 1.txt",header = TRUE,skip = 5)

(5)nrow 读取文件行数
只想读取文件部分内容,skip+nrow,读取任何部分

#读取文件的第51行-第250行
> read.table("input 1.txt",header = TRUE,skip = 50,nrow = 200)

(6)stringsAsFactors 控制读入字符串是否转化为因子
R在读取数据时,数字会读取称数值型数据;读取字符串时,R默认将所有字符串转化为因子类型。但很多情况下不需要这种转换,需要将stringAsFactors设置为false

其他read系列读取函数
read.csv(默认分隔符为逗号)、
read.delim(默认使用制表符分割)
read.fwf(读取固定跨度的文件,每一列都开始于一个特定的位置)还要给出每一列所占有的宽度值

  1. 若文件不在本机,R还支持读取网络文件
    需要将文件名修改为对应网址,可以是http ftp,可以是局域网内file开头的完整地址

  2. 读取非文本文件
    (1)HTML文件,可以使用XML包
    readHTMLTable可用来读取网页中的数据,网页中大量内容可用grep、discard来进行筛选。
    若只读取表格数据,可使用which参数。eg.which = 3,只读取网页中第三个表格

> install.packages("XML")
> library(XML)

(2)转化成csv文件
如一个Excel文件,另存为-存储为csv格式
(3)foreign包


foreign.png

(4)其他格式
若遇到其他foreign包不支持格式的文件,则可存储为文本文件或者搜索R中对应的包。
eg.想要处理matlab格式文件,则可用RSiteSearch()进行网络搜索
(5)剪切板上的数据

#首先复制数据到剪切板
> x <- read.table("clipboard",header = T,sep = ",")
#或是使用readClipboard()函数
> readClipboard()

(6)压缩文件(无需解压缩)
R可以直接读取

> read.table(gzfile("input.txt.gz"))

(7)不规则格式文件
函数:readLines()、scan()

#readLines() 参数n,限制读入的最大行数
> readLines("input.csv", n = 15)
#scan()每次读取一个单元,并根据指令进行处理。
#what:scan所期望读取文件的单元。
![scan.png](https://img.haomeiwen.com/i19791022/7b17eaef521ba801.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> scan("scan.txt",what = list(character(3),numeric(0),numeric(0)))
Read 20 records
[[1]]
 [1] "one"  "four" "one"  "four" "one"  "four" "one"  "four" "one"  "four" "one" 
[12] "four" "one"  "four" "one"  "four" "one"  "four" "one"  "four"

[[2]]
 [1] 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

[[3]]
 [1] 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6
> scan("scan.txt",what = list(character(3),numeric(2),numeric(2)))
Read 20 records
[[1]]
 [1] "one"  "four" "one"  "four" "one"  "four" "one"  "four" "one"  "four" "one" 
[12] "four" "one"  "four" "one"  "four" "one"  "four" "one"  "four"

[[2]]
 [1] 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

[[3]]
 [1] 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6 3 6

三、写入文件

  1. write()
    与read系列函数相对应
    cat():将数据显示在屏幕
    write():将数据写入文件


    write.png

    若为数据框,则使用write.table()
    若写入csv文件,则使用write.csv()
    (1)参数

> write.table(mtcars,gzfile("newfile.txt.gz"))

(3)借助foreign()

上一篇 下一篇

猜你喜欢

热点阅读