ScriptTask读取SharePoint上的Excel
准备数据是数据分析的第一步,由数据构成集合,我们称作数据集,数据集的结构是行列式的,行表示观测,列表示变量。把数据读入到R中,转换为合适的数据结构,能够提高数据分析的效率。在数据分析中,常用的存储数据的结构有标量、向量、因子和数据框,另外,还有矩阵和列表,多样化的数据结构赋予了R灵活处理数据的能力,本文简单介绍常用的数据结构(标量、向量、因子和数据框)及其使用方法。
一,常用的数据结构
标量通常是常量,每一个标量都有特定的数据类型,常用的数据类型是数值类型,字符类型,逻辑类型和日期类型。
对于逻辑类型,可能的值是TRUE和FALSE,用于逻辑操作的运算符:与(&)、或(|)、非(!)
R语言中经常会遇到一些特殊值:
- 缺失值 NA(Not Avaiable),是不可用的缩写;
- NaN为“不是一个数”,意味着计算没有数学意义;
- NULL值,空值,表示一个空的变量,不会占用任何空间,通过is.null(x)来测试变量是否为NULL值;
- 特殊的数字:Inf、-Inf 表示正无穷,负无穷;
1,向量
向量是用于存储同一类型的一维数组,同一向量中无法存储不同类型的数据,标量是只含一个元素的向量。向量使用c()函数来定义,向量元素的数据类型必须相同。
myvector <- c("a","b","c")
2,因子
因子是一个枚举类型,用于表示类别。因子有字面标签(Lable)和级别(Level)两个属性。函数factor()以一个整数向量的形式存储类别。
参数:levels代表原始类别名称,lables相当于对类别名称进行重命名。
factor(x = character(), levels, labels = levels,
exclude = NA, ordered = is.ordered(x), nmax = NA)
例如,定义一个向量,把向量转化为因子,对因子的级别进行重命名。
> sex<-c("男","女","男")
> f<-factor(sex,levels=c("男","女"),labels=c("male","female"))
> f
[] male female male
Levels: male female
通过函数levels(f)和nlevels(f)查看因子的级别和级数:
> levels(f)
[] "male" "female"
> nlevels(f)
[]
3,数据框
数据框是数据分析中,最常用的存储结构,其最大的特征是:不同的列可以包含不同的数据类型,同一列的数据类型必须相同。
数据框可以通过函数data.frame()创建:
data.frame(..., row.names = NULL, check.rows = FALSE,
check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
创建数据框的参数注释:
- ...:用于指定数据框的数据,通常是多个向量,每个变量元素的类型必须相同,所有变量的长度必须相同,可以指定变量的名称,例如,var1=c(1:5),var2=c("a","b","c","d","e")。
- row.names:字符串向量,用于指定行的名称
- check.rows:逻辑值,检查行名称是否和行的数量匹配
- check.names:逻辑值,检查变量的名称,确保变量名称合法
- fix.empty.names:逻辑值,当设置为TRUE时,自动为没有名称的变量重命名,默认值是TRUE;当设置为FALSE时,为无名变量保留名称“”;
- stringsAsFactors:逻辑值,是否把字符串类型的变量转换为因子类型
二,创建数据框
创建数据框的方法有多种,常用的方法有三种,根据实际的业务场景,选择合适的方法。
1,使用data.frame()函数
这种方法最简单,但创建的数据框包含的数据相对较少。
> age<-c(,,,)
> name<-c("s1","s2","s3","s4")
> stu<-data.frame(age,name)
> stu
age name
s1
s2
s3
s4
2,从文件中导入数据
使用read.table()函数,从带分隔符的文本文件中导入数据,该函数的格式是:
mydata <- read.table(file, options)
常用的选项是:
- header:逻辑值,表示文件的第一行是否包含变量的标题;
- sep:表示在同一行内,用于分割变量值的分隔符,默认值是",";
- row.names:字符串类型的向量,用于指定行的名称。可以是一个向量,包含所有数据行的名称,也可以指定一个字符串,该字符串是文件的列名,那么数据集使用该列的值作为行的名称。
- col.names:字符串类型的向量,如果文件的第一行不包含变量的标题,使用该参数指定变量的名称;如果参数header=FALSE,col.names参数被省略了,变量会被命名为V1、V2,以此类推。
- na.strings:用于表示缺失值的字符串向量,在读取数据时,当变量值匹配这些字符串中的任意一个时,把变量的值转换为NA。
- colClass:用于指定每一个变量的数据类型,例如,colClasses=c("numeric","character","NULL"),当类为NULL时,表示跳过该列。
- quote:用于对有特殊字符的字符串划定界限的符号,默认值是双引号或单引号。
- skip:读取数据前跳过的行数,常用于跳过文件开头的注释行。
- stringAsFactors:逻辑值,默认值是TRUE,用于指定是否把字符向量转换为因子。
在处理大型文本数据时,设置colClasses参数,把stringAsFactors设置为FALSE,能够显著提高数据处理的速度。
举个例子,从csv文件中读取数据,文件的第一行是列名:
mydata <- read.table("stu.csv",header=TRUE,sep=",",row.names="StudentID")
三,使用R连接数据库
通过ODBC驱动程序连接数据库,用户需要安装ODBC驱动程序,然后创建ODBC数据源。在R脚本中引用数据源,从数据库中读取数据,对数据进行分析。
1,创建ODBC数据源
step1:从管理员工具中选择ODBC Data Source (64-bit),添加用户数据源:
step2:选择驱动程序,ODBC Driver 13 for SQL Server
step3:输入ODBC数据源的名称,想要连接的SQL Server的名称:
step4:选择验证模式
在Windows域账户中,选择集成Windows验证模式
step5:选择默认连接的数据库
step6:使用默认的配置
step7:测试数据源,点击OK,创建数据源
step8,查看创建的用户数据源(DSN)
2,引用ODBC数据源
首先需要安装RODBC包,并在R脚本中引用包:
install.packages("RODBC")
library(RODBC)
该包中主要包含三个常用的函数,分别用于连接ODBC数据源,从数据库中执行查询返回数据框,关闭数据源。
channel <- odbcConnect(dsn,uid="",pwd="")
sqlQuery(channel,query)
close(channel)
举个例子,从ODBC数据源中,执行SQL语句,返回数据框,并及时关系连接。
> library(RODBC)
> myconn <- odbcConnect("test odbc")
> mydata <- sqlQuery(myconn,"SELECT [ID] ,[Name] ,[CreateTime] FROM [DB_test].[dbo].[Users]")
> close(myconn)
> mydata
ID Name CreateTime
Vic -- ::
Joe -- ::
>
四,检查对象的属性
创建数据框之后,需要检查数据框的各个属性,这是对准备的数据做一个初步检查。
1,查看对象的结构
> str(mydata)
'data.frame': obs. of variables:
$ ID : int
$ Name : Factor w/ levels "Joe","Vic":
$ CreateTime: POSIXct, format: "2017-11-09 15:58:07" "2017-11-09 15:58:07"
2,查看对象的行数量和变量数量
> NROW(mydata)
[]
> NCOL(mydata)
[]
> dim(mydata)
[]
3,查看数据框的变量名
> names(mydata)
[] "ID" "Name" "CreateTime"
4,查看数据框的头部或尾部数据行
head(mydata)
tail(mydata)
参考文档:
Connect R to SQL Server 2012 and “14”
ScriptTask读取SharePoint上的Excel的更多相关文章
- 读取FTP上的excel文件,并写入数据库
今天遇到一些问题,需要从ftp上读取一些excel文件,并需要将excel中的数据写入到数据库,这样就可以通过管理页面查看这些数据. 我将相关工作分为三步,1.从ftp上读取相关文件,并将excel文 ...
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- SpringBoot(十三)_springboot上传Excel并读取excel中的数据
今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...
- Django框架(上传Excel文件并读取)
博主今天整理下Django框架中上传Excel文件并读取 博主是要在管理平台中新增用例的维护功能,想着通过上传Excel文件来展示用例,下面是项目的路径图: 首先先建数据库模型 model.py 可以 ...
- 关于PHPExcel上传Excel单元格富文本和时间类型读取数据问题
当用PHPExcel做Excel上传文件读取数据时,print_r出来的数据,竟然发现其中有几个单元格返回的是PHPExcel富文本对象,而且时间类型的单元格返回的是一个不是时间戳的五位数.就像下图那 ...
- postman上传excel,java后台读取excel生成到指定位置进行备份,并且把excel中的数据添加到数据库
最近要做个前端网页上传excel,数据直接添加到数据库的功能..在此写个读取excel的demo. 首先新建springboot的web项目 导包,读取excel可以用poi也可以用jxl,这里本文用 ...
- 使用Sharepoint定时运行Excel中宏程序
需求:因为Excel中数据量很大,其中包含了几个宏程序从其他数据源读取数据,运行一次宏需要比较长的时间,为了不影响使用,要求每天半夜运行一次Excel中的宏(无参数),Excel存放在共盘上. 解决方 ...
- SharePoint 2013 配置Excel Services
前言:本文主要介绍如何启用SharePoint 2013版本Excel Services服务,并配置Excel Web Access部件,使Excel文档可以显示在Web页面中. 简单说一下流程,Sh ...
- 使用ocupload和POI一键上传Excel并解析导入数据库
使用的工具如下: JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...
随机推荐
- Spring MVC MultipartFile实现图片上传
<!--Spring MVC xml 中配置 --><!-- defaultEncoding 默认编码;maxUploadSize 限制大小--><!-- 配置Multi ...
- jQuery之ajax错误调试分析
jQuery中把ajax封装得非常好.但是日常开发中,我偶尔还是会遇到ajax报错.这里简单分析一下ajax报错 一般的jQuery用法如下,ajax通过post方式提交"汤姆和老鼠&quo ...
- Linux内核补丁批量自动下载工具
Linux kernel官网cgit工具不支持按变更代码进行补丁搜索,想到个办法就是把补丁都抓下来,这样可以在本地搜索.花了2个小时写了个小工具,话不多说,直接看效果: E:\docs\TOOLS\p ...
- select2插件不兼容ie7,ie7下样子显示错位问题
1.源文件(未修改) select2.min.css.select2.min.js 2.ie7下显示样式: 3.ie8下显示样式: 4.经查看发现ie7下对一些属性的解析和ie8不同,需对ie7另作h ...
- 插头dp
插头dp 感受: 我觉得重点是理解,算法并不是直接想出怎样由一种方案变成另一种方案.而是方案本来就在那里,我们只是枚举状态统计了答案. 看看cdq的讲义什么的,一开始可能觉得状态很多,但其实灰常简单 ...
- 安装Python算法库
安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...
- hdu 2037简单贪心--活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动 ...
- PHP基础面试题
1.PHP的意思? 答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页 2.谈谈asp,php,jsp的优缺点? 答:ASP全名Active Server Pag ...
- CharSequence cannot be resolved. It is indirectly referenced from required .class files
最近在写项目的时候发现会莫名其妙的出现这个编译错误,网上查了下发现自己安装的是JDK1.8造成的 原因:JDK1.8版本现在还不稳定 解决方法:卸载JDK1.8,安装JDK1.7 扩展:发现安装JDK ...
- bat 延时删除指定文件夹中的文件经验分享
1.bat延时 xp程序中通过ping 127.0.0.1 -n 20 来实现延时操作,ping本地地址20行. win7中通过timeout 20 来实现延时20秒. 2.删除指定文件 del /q ...