美文网首页
R语言的数据读写

R语言的数据读写

作者: jplee | 来源:发表于2017-07-13 08:34 被阅读230次

使用键盘输入数据

使用edit()或fix()函数会自动调用一个文本编辑器。

#首先建立一个空的数据框,包含age、gender和weight三个变量
mydata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))
#然后调用edit()或fix()函数来编辑和修改数据
mydata<-edit(mydata)
#fix(mydata)
mydata
## [1] age    gender weight
## <0 rows> (or 0-length row.names)

读取R语言包中的数据

R中包含许多内置数据集。由于R提供了这些数据集,你可以应用它们来进行试验,所以它们对学习和使用R很有帮助。
许多数据集都包含在名为datasets的R包中。该R包是R的基础包,它在R的搜索路径中,因此可以直接应用这些数据集。例如,可以调用内置数据集pressure:

head(pressure)
##   temperature pressure
## 1           0   0.0002
## 2          20   0.0012
## 3          40   0.0060
## 4          60   0.0300
## 5          80   0.0900
## 6         100   0.2700

任何R包都可以选择包含数据集,来补充R包datasets中的数据。例如,MASS包中包含了许多有趣的数据集。使用带有package参数的data函数可以访问相应的R包中的数据集。MASS包中包含数据集Cars93,可通过以下方法来访问:

data(Cars93, package="MASS")
head(Cars93)
##   Manufacturer   Model    Type Min.Price Price Max.Price MPG.city
## 1        Acura Integra   Small      12.9  15.9      18.8       25
## 2        Acura  Legend Midsize      29.2  33.9      38.7       18
## 3         Audi      90 Compact      25.9  29.1      32.3       20
## 4         Audi     100 Midsize      30.8  37.7      44.6       19
## 5          BMW    535i Midsize      23.7  30.0      36.2       22
## 6        Buick Century Midsize      14.2  15.7      17.3       22
##   MPG.highway            AirBags DriveTrain Cylinders EngineSize
## 1          31               None      Front         4        1.8
## 2          25 Driver & Passenger      Front         6        3.2
## 3          26        Driver only      Front         6        2.8
## 4          26 Driver & Passenger      Front         6        2.8
## 5          30        Driver only       Rear         4        3.5
## 6          31        Driver only      Front         4        2.2
##   Horsepower  RPM Rev.per.mile Man.trans.avail Fuel.tank.capacity
## 1        140 6300         2890             Yes               13.2
## 2        200 5500         2335             Yes               18.0
## 3        172 5500         2280             Yes               16.9
## 4        172 5500         2535             Yes               21.1
## 5        208 5700         2545             Yes               21.1
## 6        110 5200         2565              No               16.4
##   Passengers Length Wheelbase Width Turn.circle Rear.seat.room
## 1          5    177       102    68          37           26.5
## 2          5    195       115    71          38           30.0
## 3          5    180       102    67          37           28.0
## 4          6    193       106    70          37           31.0
## 5          4    186       109    69          39           27.0
## 6          6    189       105    69          41           28.0
##   Luggage.room Weight  Origin          Make
## 1           11   2705 non-USA Acura Integra
## 2           15   3560 non-USA  Acura Legend
## 3           14   3375 non-USA       Audi 90
## 4           17   3405 non-USA      Audi 100
## 5           13   3640 non-USA      BMW 535i
## 6           16   2880     USA Buick Century

读取数据文件

使用R语言的时候,如果是少量数据,不妨使用创建向量的语句c()或其他函数进行创建;但是对于大量数据,最好还是先通过其他更方便的软件创建数据文件,然后使用R读入这个文件。
.csv是非常好的数据文件格式,跨平台支持非常好。在Excel或者SPSS中创建的数据,只要存为csv格式,就可以使用几乎任何数据处理软件对这些数据进行处理了。使用通用格式在多人合作、不同版本兼容等常见行为中,优势十分明显。另外,之所以使用不同的数据处理软件,第一,可以取长补短。比如有些工作SPSS很复杂的,可以用R语言几行命令搞定。第二,可以进行软件间处理结果对照,发现问题。
R语言中读取外部文件的最基本函数是read.table(),还有用来读csv的read.csv(), .csv是非常好的数据文件格式,跨平台支持非常好。。
输入help(read.table)命令,就看到了关于数据输入函数的说明。对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)
        参数很多,最常用的也就几个,重写如下:
       read.table(file, header = FALSE, sep = "", quote = ""'",
           dec = ".", skip = 0,
           strip.white = FALSE, blank.lines.skip = TRUE,
           comment.char = "#")

file表示要读取的文件。file可以是①绝对路径或者相对路径,但是一定要注意,在R语言中""是转义符,所以路径分隔符必须写成"\",比如“C:\myfile\myfile.txt”。②可以使剪切板的内容。③使用file.choose(),弹出对话框,让你选择文件位置。强烈推荐使用第三种方法,免去了记忆和书写文件路径的麻烦,特别是能够避免因数据文件位置移动带来的错误!例如:read.table(file.choose(),...)。
header来确定数据文件中第一行是不是标题。默认F,即认为数据文件没有标题,也即认为第一行就开始是数据了!例如:
姓名 年龄收入
小六 12 350
如果header=F,读进来的第一行数据是“姓名年龄收入”,header=T,读进来的第一行是“小六 12 350”。
sep指定分隔符,默认是空格。quote是引号,默认就是双引号。dec是小数点的表示,默认就是一个点。skip是确定是否跳过某些行。strip.white确定是否消除空白字符。blank.lines.skip确定是否跳过空白行。comment.char指定用于表示注释的引导符号。

和read.table有所不同的,是read.csv的默认参数有别。注意看,header和sep的默认值。

read.csv(file, header = TRUE, sep = ",", quote=""", dec=".",
         fill = TRUE, comment.char="")

因为csv就是逗号分割的意思,当然sep必须是逗号。header也是默认有标题的。fill是默认填充的,即遇到行不相等的情况,空白域自动添加既定值。

举个例子,我们有一个记录金庸和古龙武侠人物的文件,分别保存为制表符分隔的txt文件和逗号分隔的csv文件。
用read.table()读取TXT文件:

wuxia <- read.table("wuxia.txt",header = T)
wuxia
##   序号   姓名       小说名称
## 1    1 令狐冲       笑傲江湖
## 2    2 张无忌     倚天屠龙记
## 3    3   黄蓉     射雕英雄传
## 4    4 韦小宝         鹿鼎记
## 5    5 李寻欢 多情剑客无情剑
## 6    6 陆小凤     陆小凤传奇
## 7    7   乔峰       天龙八部
## 8    8 小龙女       神雕侠侣
## 9    9 胡一刀       雪山飞狐

用read.csv()读取csv文件:

wuxia2 <- read.csv("wuxia.csv",header = T,sep = ",")
wuxia2
##   序号   姓名       小说名称
## 1    1 令狐冲       笑傲江湖
## 2    2 张无忌     倚天屠龙记
## 3    3   黄蓉     射雕英雄传
## 4    4 韦小宝         鹿鼎记
## 5    5 李寻欢 多情剑客无情剑
## 6    6 陆小凤     陆小凤传奇
## 7    7   乔峰       天龙八部
## 8    8 小龙女       神雕侠侣
## 9    9 胡一刀       雪山飞狐

读取Excel文件

可以将Excel文件另存为csv格式,然后用read.csv()读取。
或者安装xlsx包(需要安装Java虚拟机),使用read.xlsx2()直接读取。

library(xlsx)
## Warning: package 'xlsx' was built under R version 3.3.2
## Loading required package: rJava
## Warning: package 'rJava' was built under R version 3.3.2
## Loading required package: xlsxjars
## Warning: package 'xlsxjars' was built under R version 3.3.2
wuxia3 <- read.xlsx2("wuxia.xlsx",sheetName="Sheet1")
wuxia3
##   序号   姓名       小说名称
## 1    1 令狐冲       笑傲江湖
## 2    2 张无忌     倚天屠龙记
## 3    3   黄蓉     射雕英雄传
## 4    4 韦小宝         鹿鼎记
## 5    5 李寻欢 多情剑客无情剑
## 6    6 陆小凤     陆小凤传奇
## 7    7   乔峰       天龙八部
## 8    8 小龙女       神雕侠侣
## 9    9 胡一刀       雪山飞狐

使用openxlsx包不需要java的支持,函数也是read.xlsx()。

library(openxlsx)
## Warning: package 'openxlsx' was built under R version 3.3.2
## 
## Attaching package: 'openxlsx'
## The following objects are masked from 'package:xlsx':
## 
##     createWorkbook, loadWorkbook, read.xlsx, saveWorkbook,
##     write.xlsx
wuxia4 <- read.xlsx("wuxia.xlsx",sheet = 1)
wuxia4
##   序号   姓名       小说名称
## 1    1 令狐冲       笑傲江湖
## 2    2 张无忌     倚天屠龙记
## 3    3   黄蓉     射雕英雄传
## 4    4 韦小宝         鹿鼎记
## 5    5 李寻欢 多情剑客无情剑
## 6    6 陆小凤     陆小凤传奇
## 7    7   乔峰       天龙八部
## 8    8 小龙女       神雕侠侣
## 9    9 胡一刀       雪山飞狐

还可以将Excel内容复制到剪切板,然后使用read.table("clipboard",header=TRUE,……)来读取剪切板的内容;或者使用RODBC包读取ODBC连接的方式等。

保存数据到文件

使用write.table()、write.csv()等函数都可以,或者调用xlsx包保存到Excel文件中。

mydata
## [1] age    gender weight
## <0 rows> (or 0-length row.names)
write.table(mydata,"mydata.txt",sep=",")
library(xlsx)
write.xlsx2(mydata,"mydata.xlsx")

相关文章

  • R语言的数据读写

    使用键盘输入数据 使用edit()或fix()函数会自动调用一个文本编辑器。 读取R语言包中的数据 R中包含许多内...

  • R语言readr包的使用

    R语言readr包的使用 readr包中的读写函数比正常R语言数据的读写快了很多倍 主要的包有两个,一个数read...

  • R语言学习笔记

    本文是对R语言一个学习总结,共包括如下章节内容: 什么是R语言 开发环境搭建 基本语法 向量 列表和矩阵 读写数据...

  • day5 阿来

    继续学习R语言 R语言数据学习 数据R语言学习.png 数据输入 数据输出 总结 R语言学习的第二天,熟悉了很多操...

  • R语言基础--数据类型-总结

    R语言基础--数据类型-总结 1、R语言基础--数据类型之向量 2、R语言基础--数据类型之因子 3、R语言基础-...

  • 生信学习小组Day5笔记-lamyusam_

    R语言学习 今天,了解了R中的数据类型,初步学习R语言的数据结构。 R的数据类型 向量(vector) R语言中的...

  • 四、文件读写

    1.文件读写 (1)文件写入 表格文件读入R语言里,就是数据框,对数据框的修改不会同步到表格文件 (2)将数据框导...

  • R数据读写

    csv文件读写 txt文件读写 读取excel文件 转成csv文件读取(逗号分隔) 专程prn文件读取(空格分隔)...

  • sql自学笔记(一)

    1.数据库简介 解决的问题:持久化存储,优化读写,保证数据的有效性。关系型数据库:基于E-R模型、使用sql语言进...

  • Part 4:文件读写

    Part 4:文件读写 1.认识csv格式 表格文件读入到R语言里,就是个数据框 对数据框进行的修改不会同步到表格...

网友评论

      本文标题:R语言的数据读写

      本文链接:https://www.haomeiwen.com/subject/rszihxtx.html