准备数据是数据分析的第一步,由数据构成集合,我们称作数据集,数据集的结构是行列式的,行表示观测,列表示变量。把数据读入到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
[1] male   female male
Levels: male female

通过函数levels(f)和nlevels(f)查看因子的级别和级数

> levels(f)
[1] "male"   "female"
> nlevels(f)
[1] 2

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(13,15,17,20)
> name<-c("s1","s2","s3","s4")
> stu<-data.frame(age,name)
> stuage name
1  13   s1
2  15   s2
3  17   s3
4  20   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)
> mydataID Name          CreateTime
1  1  Vic 2017-11-09 15:58:07
2  2  Joe 2017-11-09 15:58:07
> 

四,检查对象的属性

创建数据框之后,需要检查数据框的各个属性,这是对准备的数据做一个初步检查。

1,查看对象的结构

> str(mydata)
'data.frame':    2 obs. of  3 variables:$ ID        : int  1 2$ Name      : Factor w/ 2 levels "Joe","Vic": 2 1$ CreateTime: POSIXct, format: "2017-11-09 15:58:07" "2017-11-09 15:58:07"

2,查看对象的行数量和变量数量

> NROW(mydata)
[1] 2
> NCOL(mydata)
[1] 3
> dim(mydata)
[1] 2 3

3,查看数据框的变量名

> names(mydata)
[1] "ID"         "Name"       "CreateTime"

4,查看数据框的头部或尾部数据行

head(mydata)
tail(mydata)

参考文档:

Connect R to SQL Server 2012 and “14”

R实践 第二篇:创建数据集相关推荐

  1. 【关键词提取】第二篇:数据集、实现代码介绍

    原文地址:http://www.cnblogs.com/lessmore/category/1009890.html 转载请保留本行,欢迎交流. 目录: 第一篇:综述 第二篇:数据集.实现代码介绍 第 ...

  2. matlab实现鬼波信号压制算法  代码实践--第二篇 频率-波数域鬼波压制

    第二篇  matlab实现频率-波数域鬼波压制方法 本篇用来介绍频率-波数域鬼波压制的实现思路和压制效果 算法实现思路见2.3节,除了文中代码外,需配置鬼波压制算法工具包(https://downlo ...

  3. R语言实战(创建数据集)

    创建数据集 什么叫数据集? 数据集通常是由数据构成的矩形数组,行表示观测,列表示变量 如下面的病例数据集 patientID age diabetes status 1 1 25 Type1 Poor ...

  4. R语言入门之创建数据集——向量、矩阵、数组、数据框和列表

    码字不易,转发请注明出处:http://blog.csdn.net/qq_28945021/article/details/52100765 摘要 随着大数据的火爆发展,适合数据分析及生成图表的R语言 ...

  5. canvas初探实践-第二篇

    前言 本文分享了canvas的文本操作,图片操作,像素操作,对图片实现类似ps功能操作,其它API. 文本操作 探索文本操作,只需简单记住如何操作文本的方法.属性的API. 方法: 方法 说明 fil ...

  6. Android Studio开发第二篇创建新项目

    创建新项目很简单,File-New-New Project,这个没什么好说的跟Eclipse都差不都. 第二步SDK选择,有手机平板还有Wear,TV,汽车Auto,谷歌眼镜等几个种平台,这里就先选择 ...

  7. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  8. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

  9. 使用 ASP.NET Core, Entity Framework Core 和 ABP 创建N层Web应用 第二篇

    介绍 这是"使用 ASP.NET Core ,Entity Framework Core 和 ASP.NET Boilerplate 创建N层 Web 应用"系列文章的第二篇.以下 ...

  10. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm

    自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问题是一些比较基本的问题,由于时间的缘故,不会一一的为大家回复,如果有不明白的,希望大家勤自学!本系列虽然不难,但 ...

最新文章

  1. ADO与ADO.NET的区别与介绍
  2. 初为项目经理,你应该怎么做?(转载)
  3. Ubuntu 16.04安装NASM汇编IDE-SASM
  4. boost::adjacency_list用法的测试程序
  5. 【Qt】Qt5.9编译MySQl5.7驱动
  6. 飞畅科技告诉你什么是集成串口服务器POE交换机?
  7. Scala学习笔记02:数据类型、常量与变量
  8. ajax 解析gzip,javascript – 如何让浏览器gunzip一个Ajax获取gziped文本文件?
  9. 《信号与系统学习笔记》—采样(一)
  10. 小程序云开发——列表页和详情页
  11. Base32 应用与原理解析
  12. 合天网安的渗透测试考核过程
  13. IPv4头部结构具体解释
  14. React---关于useCallback和useMemo的详解
  15. 2-11 CAD基础 镜像(mirror)
  16. 解锁万亿级市场,边缘计算不“边缘”
  17. 如何在知网下载硕士、博士论文PDF?
  18. vm fusion Linux系统克隆
  19. IP.SB - 在线 IPv4 / IPv6 信息查询
  20. 解决 MySQL 5.7 中 Your password does not satisfy the current policy requirements. 问题

热门文章

  1. Atiitt 日志技术的重大问题解决法 目录 1.1. 只想看某些日志,使用tag过滤法 1 1.2. 能方便清晰的列出某一业务(如支付)的完整的处理流程 业务tag 1 1.3. - NDC(N
  2. Atitit 深入理解软件的本质 attilax总结 软件三原则三次原则是DRY原则和YAGNI原则的折
  3. Atitit.常用分区api的attilax总结
  4. (转)跳舞的大象:郭士纳在IBM的案例
  5. CTP: 找ActionDay 和TradingDay说点事
  6. 阿里云 cGPU 容器技术白皮书
  7. 踩着七彩祥云来接你的人不一定是意中人,也可能是阿里云
  8. 一文读懂数据湖 | 凌云时刻
  9. hbase占用内存过高_为什么不建议在 HBase 中使用过多的列族
  10. 【人脸识别】基于matlab GUI PCA算法人脸识别门禁系统【含Matlab源码 1777期】