一 读纯文本文件

1.1read.table读取表格形式的文件。

如houses.data,第一行是变量名,第一列是记录序号.

Price   Floor  Area  Rooms   Age   Cent.heat

01  52.00  111.0    830    5     6.2      no

02  54.75  128.0    710    5     7.5      no

>d1=read.table("houses.data")

> dim(d1)

[1] 5 6

>str(d1)

'data.frame':5 obs. of  6 variables:

$ Price    : num  52 54.8 57.5 57.5 59.8

$ Floor    : num  111 128 101 131 93

$ Area     : int  830 710 1000 690 900

$ Rooms    : int  5 5 5 6 5

$ Age      : num  6.2 7.5 4.2 8.8 1.9

$ Cent.heat: Factor w/ 2 levels "no","yes": 1 1 1 1 2

> row.names(d1)

[1] "01" "02" "03" "04" "05"

如果没有第一列记录序号,如

Price   Floor  Area  Rooms   Age   Cent.heat

52.00  111.0    830    5     6.2      no

54.75  128.0    710    5     7.5      no

> d2=read.table("houses2.data",header=T)

> d1=read.table("houses.data")

> dim(d2)

[1] 5 6

> str(d2)

'data.frame':5 obs. of  6 variables:

$ Price    : num  52 54.8 57.5 57.5 59.8

$ Floor    : num  111 128 101 131 93

$ Area     : int  830 710 1000 690 900

$ Rooms    : int  5 5 5 6 5

$ Age      : num  6.2 7.5 4.2 8.8 1.9

$ Cent.heat: Factor w/ 2 levels "no","yes": 1 1 1 1 2

> row.names(d2)  #R会自动加上记录序号

[1] "1" "2" "3" "4" "5"

read.table的用法。

read.table(file, header = FALSE, sep = "", quote = "\"'",

dec = ".", row.names, col.names,

as.is = !stringsAsFactors,

na.strings = "NA", colClasses = NA, nrows = -1,

skip = 0, check.names = TRUE, fill = !blank.lines.skip,

strip.white = FALSE, blank.lines.skip = TRUE,

comment.char = "#",

allowEscapes = FALSE, flush = FALSE,

stringsAsFactors = default.stringsAsFactors(),

fileEncoding = "", encoding = "unknown", text)

file是要读入的文件名(及路径),sep是数据的分隔符,skip表示读入数据时跳过的行数。

1.2scan直接读纯文本文件数据。

如文件scan_test.txt。

25 38 39 29 28 40

> s1=scan("scan_test.txt")

Read 6 items

> dim(s1)

NULL

> str(s1)

num [1:6] 25 38 39 29 28 40

> class(s1)#读入后成为一个向量

[1] "numeric"

文件h_w.data中第一列表示身高,第二列表示体重。

172.4  75.0   169.3  54.8   169.3  64.0   171.4  64.8   166.5  47.4

171.4  62.2   168.2  66.9   165.1  52.0   168.8  62.2   167.8  65.0

165.8  62.2   167.8  65.0   164.4  58.7   169.9  57.5   164.9  63.5

> s2=scan("h_w.data",list(height=0,weight=0))

Read 100 records

> dim(s2)

NULL

> str(s2)

List of 2

$ height: num [1:100] 172 169 169 171 166 ...

$ weight: num [1:100] 75 54.8 64 64.8 47.4 62.2 66.9 52 62.2 65 ...

> class(s2)#读入后成为一个列表对象

[1] "list"

可以将scan_test.txt的数据存放成矩阵形式。

> s3=matrix(scan("scan_test.txt",0),nrow=3,ncol=2,byrow=T)

Read 6 items

> s3

[,1] [,2]

[1,]   25   38

[2,]   39   29

[3,]   28   40

> dim(s3)

[1] 3 2

> str(s3)

num [1:3, 1:2] 25 39 28 38 29 40

> class(s3)

[1] "matrix"

scan用法.

scan(file = "", what = double(), nmax = -1, n = -1, sep = "",

quote = if(identical(sep, "\n")) "" else "'\"", dec = ".",

skip = 0, nlines = 0, na.strings = "NA",

flush = FALSE, fill = FALSE, strip.white = FALSE,

quiet = FALSE, blank.lines.skip = TRUE, multi.line = TRUE,

comment.char = "", allowEscapes = FALSE,

fileEncoding = "", encoding = "unknown", text)

what可以指定一个列表,列表内容是要读取的数据类型。

二 读其他格式的数据文件

加载foreign包可以读取其他统计软件的数据。

read.spss()读spss文件;

read.xport()读SAS文件;

read.S()读S_PLUS文件;

read.dta()读Stata文件。

文本文件(制表符分隔)用read.delim读入,如

Col1Col2Col3Col4Col5

A23151

B6891

> r1=read.delim("educ_scores.txt")

> dim(r1)

[1] 8 5

> str(r1)

'data.frame':8 obs. of  5 variables:

$ Col1: Factor w/ 8 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8

$ Col2: int  2 6 5 9 11 12 1 7

$ Col3: int  3 8 2 4 10 15 4 3

$ Col4: int  15 9 7 3 2 1 12 4

$ Col5: int  1 1 0 1 0 0 1 0

CSV(逗号分隔)文件用read.csv读入。

如,用UE打开的CSV文件

Col1,Col2,Col3,Col4,Col5

A,2,3,15,1

B,6,8,9,1

> r2=read.csv("educ_scores.csv")

> dim(r2)

[1] 8 5

> str(r2)

'data.frame':8 obs. of  5 variables:

$ Col1: Factor w/ 8 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8

$ Col2: int  2 6 5 9 11 12 1 7

$ Col3: int  3 8 2 4 10 15 4 3

$ Col4: int  15 9 7 3 2 1 12 4

$ Col5: int  1 1 0 1 0 0 1 0

三 写数据文件

3.1write(x, file = "data",

ncolumns = if(is.character(x)) 1 else 5,

append = FALSE, sep = " ")#append=F,写一个新文件,T在原文件上追加数据;

如一个矩阵x

> class(x)

[1] "matrix"

> x

[,1] [,2] [,3] [,4] [,5]

[1,]    1    3    5    7    9

[2,]    2    4    6    8   10

> write(x)

默认输出的文件名是"data",内容如下

1 2 3 4 5

6 7 8 9 10

> write(t(x))

输出如下

1 3 5 7 9

2 4 6 8 10

3.2write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",

eol = "\n", na = "NA", dec = ".", row.names = TRUE,

col.names = TRUE, qmethod = c("escape", "double"),

fileEncoding = "")  #write.csv()类似

数据框如下

> dd

Name Sex Age Height Weight

1    Alice   F  13   56.5   84.0

2    Becka   F  13   65.3   98.0

> str(dd)

'data.frame':19 obs. of  5 variables:

$ Name  : Factor w/ 19 levels "Alfred","Alice",..: 2 3 5 10 11 12 15 16 17 1 ...

$ Sex   : Factor w/ 2 levels "F","M": 1 1 1 1 1 1 1 1 1 2 ...

$ Age   : num  13 13 14 12 12 15 11 15 14 14 ...

$ Height: num  56.5 65.3 64.3 56.3 59.8 66.5 51.3 62.5 62.8 69 ...

$ Weight: num  84 98 90 77 84.5 ...

> write.table(dd,file="dd.txt")

输出的文件如下所示

"Name" "Sex" "Age" "Height" "Weight"

"1" "Alice" "F" 13 56.5 84

"2" "Becka" "F" 13 65.3 98

> write.csv(dd,file="dd.csv")

输出的CSV文件如下所示

"","Name","Sex","Age","Height","Weight"

"1","Alice","F",13,56.5,84

"2","Becka","F",13,65.3,98

四 访问数据库

最方便的是通过RODBC包。

dsn_test=odbcConnect("dsn_1",uid="scott",pwd="***")  #建立一个连接dsn_test

emp1=sqlFetch(dsn_test,emp)                                        #读取数据库中的表emp到一个数据框emp1中

q1=sqlQuery(dsn_test,"select * from emp")                     #提交一个查询并将结果返回为数据框q1

sqlDrop(dsn_test,"emp2")                                               #删除数据库中的表emp2

close(dsn_test)                                                               #关闭连接dsn_test

一些针对某些特定数据库的包,如RMySQL、ROracle、teradataR等。

转载本文请联系原作者获取授权,同时请注明本文来自刘永辉科学网博客。

链接地址:http://blog.sciencenet.cn/blog-473771-754005.html

上一篇:Teradata 中计算方差和标准差

下一篇:假设检验与“无罪推定论”——《统计中的智慧》

r软件读取oracle数据文件,科学网—R软件之读写数据文件 - 刘永辉的博文相关推荐

  1. r语言 林元震_科学网—R语言简介 - 林元震的博文

    R既是软件,也是语言,在GNU协议General Public Licence下免费发行,是1995年由新西兰奥克兰大学统计系的Ross Ihaka和Robert Gentleman基于S语言基础上共 ...

  2. matlab 命令文件转成函数文件,科学网—[转载]利用MATLAB将nc文件转成tif - 张乐乐的博文...

    参考链接:https://blog.csdn.net/yangjh1991/article/details/69788778 Lon = ncread(InFile,'lon'); %读取经度数据 L ...

  3. 哨兵二号数据offline_科学网—利用ENVI 5.3读取哨兵2号(Sentinel-2)L1C数据 - 朱永超的博文...

    2016年12月6号,欧空局修改了哨兵2号(S2)数据的命名规则,这导致ENVI 5.3仅能打开此前获取的S2数据,而之后的数据仅能在ENVI最新版5.4中打开,参见:https://yceo.yal ...

  4. matlab 数据分割,科学网—MATLAB把一个包含多个站点数据的文件分割到各个站点单独的文件夹 - 张乐乐的博文...

    有65个站点的气象数据,但是这些数据全部在一个文件中,本程序主要想着把每个站点的数据放在各个单独的文件夹中.下面是我给写的程序: clear;clc %读取数据 shuju=importdata('C ...

  5. php 读取 stl 文件,科学网—[转载]【源码】读取ASCII STL文件的STLReader - 刘春静的博文...

    读取包含顶点和面的ASCII STL文件,并将其构造为矩阵"顶点"."颜色"和"面".之后,使用各小模块在Matlab上建立模型. Read ...

  6. bam文件读取_科学网—Pacbio Sequel两种bam文件解析 - 卢锐的博文

    pacbio目前有两种主流的测序平台,RSII和Sequel,后者是前者的升级版. pacbio sequel下机是bam格式的reads文件,它和reads比对到参考基因组上生成的bam文件,内容有 ...

  7. python读取哨兵卫星数据_科学网—【Python】批量下载Sentinel-2卫星数据 - 江佳乐的博文...

    简介:本文介绍了一种基于Python批量下载Sentinel-2卫星数据的方法.通过该方法,用户可自定义感兴趣研究区(ROI).限定时间范围.选择产品类别.进行云量筛选,实现自动化批量下载Sentin ...

  8. r语言 林元震_科学网—ASReml-R之简介 - 林元震的博文

    目前用于遗传分析的主要统计软件有SAS和SPSS等,并已经开发出了包括WOMBAT.MCMCglmm(R语言的程序包)等在内一系列遗传方差组份估计软件.ASReml是一个非常强大的统计软件,由NSW ...

  9. linux基因组文件,科学网-NGS基础 - 参考基因组和基因注释文件-陈同的博文

    NGS基础 - 参考基因组和基因注释文件 同步滚动:关 参考基因组和基因注释文件获取 通常测序生成的reads要与参考基因组或参考转录组进行比对,或Pseudo-alignment.所以首先需要获取参 ...

  10. r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文

    这一篇是衔接上一篇的,就是要用ggplot2程序包对PCA和PCoA进行可视化.代码我直接照搬过来了,只是绘图的时候用ggplot函数.ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系 ...

最新文章

  1. 华为生态链的全方位解读
  2. centos安装python3_在CentOS8 上安装Python3
  3. r语言上机文本分析与词云绘制_倚天屠龙记的文本分析
  4. Python基础教程---读书笔记四
  5. Codeforces Round #548 (Div. 2) A. Even Substrings
  6. 简单实现KeyChain实例
  7. OpenCV_05 形态学操作:连通性+腐蚀和膨胀+开闭运算+礼帽和黑帽
  8. 【日志】数字电路电子钟制作日志
  9. CSS轮廓 边距 填充 分组和嵌套
  10. 苹果 AirPods 只能是 iPhone 的配件吗?
  11. 《剑指offer》第二章小结(1)——链表的基本操作
  12. 【SQL 社区】一些有用的SQL社区!(持续更新~~)
  13. ip软件在生活中器到哪些作用呢?
  14. Win10 打开heu kms activator工具进度条到70%闪退(未解决)
  15. R语言检验独立性:卡方检验(Chi-square test)和费舍尔Fisher精确检验分析案例报告
  16. kubernetes部署失败的原因
  17. 如何注册自己的企业邮箱?
  18. 制作HTML长图的APP,长图制作工具 显示只是一张图片,点开一看却发现有很多张图片|制作长图软件...
  19. 大数据分析哪款软件好用?如何进行大数据分析
  20. CentOS安装QEMU(试验成功且简单的方法)

热门文章

  1. vs2013 c++項目轉 vs2008
  2. 路由器、猫、交换机的解释
  3. 2016 Multi-University Training Contest 2 1012 La Vie en rose (暴力)
  4. 电信NB-IOT物联网卡与阿里云物联网平台,不得不说的秘密!
  5. [科普] 狭义相对论
  6. 技术创新是协同OA产品的生命力
  7. 【解决思路】当前不会命中断点,还未为文档加载任何符号
  8. 正好配资在线开户叶飞带崩小票
  9. 英语老师超强整理:18条小学英语语法快速记忆口诀,英语成绩次次100!
  10. 未储存的Pages文件怎么恢复