用R获取数据
来源:互联网 发布:中国进口台湾数据 编辑:程序博客网 时间:2024/04/27 23:39
R作为一个开放的系统,它与其他应用软件,尤其是数据处理软件,比如Excel,SPSS等有着密切的资源共享性,相互之间进行数据调用非常方便。下面就常见的几种读取数据的方法进行分类描述,内容持续更新。。。
我们在每次开始用R进行工作前,可以先考虑使用setwd()函数设定常用工作路径,以省去之后可能需要的多次指定文件获取、修改、保存路径的操作,或者在每次读取时设置路径都可以。
1.读取.csv文件
csv是逗号分隔值文件格式,csv(逗号分隔值)是一种用来存储数据的纯文本文件,通常都是用于存放电子表格或数据的一种文件格式。
本例中用到的数据集是来自于R下MASS包中的Insurance.csv文件。文件位置一般在包的安装目录下的data文件夹下。例如下图是我电脑中的Insurance.csv文件存放位置。
> setwd("D://R包//MASS//data") #设置默认路径> write.csv(Insurance,"Insurance.csv") #将Insurance数据集以csv格式存入指定路径> Insur=read.csv("Insurance.csv") #使用read.csv()函数直接读取> head(Insur) #查看读取到的部分数据 X District Group Age Holders Claims1 1 1 <1l <25 197 382 2 1 <1l 25-29 264 353 3 1 <1l 30-35 246 204 4 1 <1l >35 1680 1565 5 1 1-1.5l <25 284 636 6 1 1-1.5l 25-29 536 84>
也可使用read.table()函数读取数据
> Insur_1=read.table("Insurance.csv") #<span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', Tahoma, Simsun; font-size: 15px; line-height: 27px;">使用read.table()函数读取数据</span>> head(Insur_1) #查看读取到的部分数据 V1 V21 NA ,"District","Group","Age","Holders","Claims"2 1 ,"1","<1l","<25",197,383 2 ,"1","<1l","25-29",264,354 3 ,"1","<1l","30-35",246,205 4 ,"1","<1l",">35",1680,1566 5 ,"1","1-1.5l","<25",284,63>可以看出,用专门读取CSV格式的函数read.csv()与一般的读取数据函数read.table()是不同的,这是因为两函数中控制参数的默认值不同。如果想用read.table()函数输出read.csv()函数那样的格式,可以在read.table()设置参数.具体步骤如下
> Insur_2=read.table("Insurance.csv",header=TRUE,sep=",") #更改函数设置> head(Insur_2) X District Group Age Holders Claims1 1 1 <1l <25 197 382 2 1 <1l 25-29 264 353 3 1 <1l 30-35 246 204 4 1 <1l >35 1680 1565 5 1 1-1.5l <25 284 636 6 1 1-1.5l 25-29 536 84>
2:读取.sav文件
读取.sav文件,我们可以用foregin加载包中的read.spss()函数来读取文件,可是中间过程遇到了“ position 0: Variable name begins with invalid character”,百度了一下问题所在,说是问题出在spss文件的变量名命名规则与R中的不同,出现了R中非法字符,但我把名称修改了之后依旧是这个错误。很无奈。所幸在搜索的过程中又找到了一个新的方法。留个解决方法吧,方便以后遇到这个问题的童鞋查找。
foreign包和Hmisc包的读取sav文件的函数兼容性不太好,可以使用memisc包中的方法搞定:
install.packages("memisc") # 安装memisc包(支持中文命名)library(memisc)
setwd(".sav路径")data0 = as.data.set(spss.system.file("你的spss文件名.sav"))data = as.data.frame(data0) # data即为所要的数据
3.读取.xls文件
从Excel直接获取数据最好的方式是将其转化为.csv格式,再用读取csv格式文件的方法获取数据。但在Windows系统中我们也可以选择使用RODBC软件包中的相关函数来实现。本次用到的.xls文件内容如下:
首先加载RODBC软件包,本地没有的可以先去下载,下载完成后再输入下面这句话,完成加载
> library(RODBC) > ch=odbcConnectExcel(file.choose()) #输入这句话后会显示出一个选择窗口,直接点击你需要读取的.xls文件即可。(注意:odbcConnectExcel()只能在32bit上的电脑操作系统上使用)> ch #显示连接信息RODBC Connection 1Details: case=nochange DBQ=D:\R包\stata.xls DefaultDir=D:\R包 Driver={Microsoft Excel Driver (*.xls)} DriverId=790 MaxBufferSize=2048 PageTimeout=5> sqlTables(ch) #显示出从ODBC中连接到的表格 TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS1 D:\\R包\\stata <NA> Sheet1$ SYSTEM TABLE <NA>2 D:\\R包\\stata <NA> Sheet2$ SYSTEM TABLE <NA>3 D:\\R包\\stata <NA> Sheet3$ SYSTEM TABLE <NA>> Insur=sqlFetch(ch,"Sheet1") #读取表格中的Sheet1(也可根据自己的需求打开),并储存与Insur> odbcClose(ch) #关闭连接> head(Insur) #读取Insur中的前若干条数据,或者直接用> Insur读取全部数据 时间 房价指数 建材价格指数1 2000-q1 100.7 98.02 2000-q2 101.1 98.23 2000-q3 101.5 98.44 2000-q4 101.2 98.65 2001-q1 101.9 99.96 2001-q2 102.5 99.9>
在Mac OS或Linux,则可以使用gdata加载包中的read.xls()函数来读取Excel数据,本文不做论述。
4.读取txt文件
TXT是最常见的文本格式,在储存数据时以制表符(即Tab)为分割符,我们同样可以使用read.table()和read.csv()函数对该格式进行读取
本例中用到的文本文件见下图
> setwd("D://R包")> Insur_txt=read.table("stata.txt") #使用read.table()函数直接读取> head(Insur_txt) V1 V2 V31 2000-q1 100.7 98.02 2000-q2 101.1 98.23 2000-q3 101.5 98.44 2000-q4 101.2 98.65 2001-q1 101.9 99.96 2001-q2 102.5 99.9> > Insur_txt1=read.csv("stata.txt",header=TRUE,sep="") #使用read.csv()函数> head(Insur_txt1) X2000.q1 X100.7 X981 2000-q2 101.1 98.22 2000-q3 101.5 98.43 2000-q4 101.2 98.64 2001-q1 101.9 99.95 2001-q2 102.5 99.96 2001-q3 102.7 100.1>
5.获取网页数据
> install.packages(XML)
<span style="font-family: Arial, Helvetica, sans-serif;">>library(XML) #安装并加载XML包</span>
> u1="http://stockdata.stock.hexun.com/2008en/zxcwzb.aspx?stockid=000002&type=0&adate=2013.06.30" #将待读取的页面网址存入变量u1> table1=readHTMLTable(u1) #将数据读取结果存入到变量table1> names(table1) #显示table1各维度名称[1] "NULL" "NULL" "NULL" "NULL"> table1[[2]] #读取table1第2维度中的内容 Period End Date June 30 20161 Operating Income 74,795,294,306.292 Net Profit 5,351,309,986.083 Total Profit 9,980,342,845.594 Net Profit Excluding Extraordinary Items 5,335,845,153.105 Total Assets 712,306,691,248.756 Shareholders' Equity 97,460,727,287.977 Net Cash Flows From Operating Activities 25,797,213,427.978 Basic Earnings Per Share 0.489 The Rate Of Return On Equity 5.4910 Net Cash Flows From Operating Activities Per Share 2.3411 Net Assets Value Per Share 8.8312 Net Assets Per Share After Adjusted 0.0013 Foreign Financial Accounting Standard Net Profit 0.0014 EPS Excluding Extraordinary Items 0.4815 Report Start Time 2016-01-0116 Report End Time 2016-06-30 March 31 20161 14,611,312,019.582 833,232,885.763 1,687,268,595.754 805,115,190.875 658,837,478,395.546 100,636,736,796.097 -10,726,129,132.788 0.089 0.8310 -0.9711 9.1212 0.0013 0.0014 0.0715 2016-01-0116 2016-03-31>
- 用R获取数据
- 用R获取数据
- R语言获取数据
- 使用R获取金融数据
- 【R语言 数据分析】R语言获取Excel数据
- R语言获取历史股票数据
- r 直接从网上获取数据
- (三)R语言-从数据源获取数据
- R语言-获取指定位置的数据
- 用R可视化数据
- 用R分析视频数据
- <Android>关于获取资源文件R中的数据
- [R语言] quantmod 包获取国内的股票数据
- 利用R语言获取最新所有股票数据
- [R语言] quantmod 包获取国内的股票数据
- R Getting and Cleaning Data获取和清理数据
- [R语言] quantmod 包获取国内的股票数据
- Mac版R语言(四)网络数据自动获取
- MySQL安装及可视化工具使用
- Android 7.0 Nougat FileUriExposedException 图片裁剪 文件分享
- Android存储
- 【Core Java Volume 3】反射---编写泛型数组代码
- android仿饿了么点餐动画
- 用R获取数据
- IOS设置UIButton的Image大小
- 人脸检测——UnitBox
- nodejs之async异步编程
- 天干年月算法java
- 对hibernate的学习之用配置文件和annotation配置的区别
- 静态成员变量和静态成员函数
- Java汉字转拼音
- fread读到数据不代表读成功