RLearning第2弹:创建数据集
任何一门语言,数据类型和数据结构是最基础,也是最重要的,必须要学好!
1.产生向量
a<-c(1,2,5,3,6,-2,4)
b<-c("one","two","three")
c<-c(TRUE,TRUE,FALSE,FALSE,FALSE)
这里a是数值型向量,b是字符型变量,而c是逻辑型向量。单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)!
2.访问向量中元素
> a<-c(1,2,5,3,6,-2,4) > a[3] [1] 5 > a[c(1,3,5)] [1] 1 5 6 > a[2:6] #使用冒号生成数值序列,等价于a[c(2,3,4,5,6)]和a[c(2:6)] [1] 2 5 3 6 -2 a<-c(2:6)等价于a<-c(2,3,4,5,6)
3.矩阵
> x<-matrix(1:20,nrow = 5,ncol = 4) #可以只写nrow或ncol
> x
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
> cells <- c(1,26,24,68)
> rnames <- c("R1","R2")
> cnames <- c("C1","C2")
> mymatrix <- matrix(cells, nrow = 2,ncol = 2,byrow = TRUE,dimnames = list(rnames,cnames))
> mymatrix
C1 C2
R1 1 26
R2 24 68
> mymatrix <- matrix(cells, nrow = 2,ncol = 2,byrow = FALSE,dimnames = list(rnames,cnames))
> mymatrix
C1 C2
R1 1 24
R2 26 68
#另一个例子:
> x<-matrix(1:10,nrow = 2)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
> x[2,] #访问矩阵第二行,注意区分:matlab中x(2,:)表示访问矩阵第二行
[1] 2 4 6 8 10
> x[,2]
[1] 3 4
> x[1,4]
[1] 7
> x[1,c(4,5)]
[1] 7 9
4.数据框
一般格式:mydata <- daframe(col1,col2,col3,…)
其中列向量col1,col2,col3,…可以为任何类型(如字符型、数值型或逻辑型)。
例如:
> patientID <- c(1,2,3,4)
> age <- c(25,34,28,52)
> diabetes <- c("Type1","Type2","Type1","Type1")
> status <- c("Poor","Improved","Excellent","Poor")
> patientdata <- data.frame(patientID,age,diabetes,status)
> patientdata
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
注意:每一列数据的模式必须唯一。
> patientdata[1,2]
[1] 25
> patientdata[1:2]
patientID age
1 1 25
2 2 34
3 3 28
4 4 52
> patientdata[c("diabetes","status")]
diabetes status
1 Type1 Poor
2 Type2 Improved
3 Type1 Excellent
4 Type1 Poor
> patientdata$age
[1] 25 34 28 52
附:
就$简单介绍:
$用来选取给定一个数据框中某个特定变量。
在每个变量名前都键入patientdata$可能会让人生厌,可以联合使用attach()和detach()和with()来简化代码。
例如:
with(mtcars,{
summary(mpg,disp,wt)
plot(mpg,disp)
plot(mpg,wt)
})
5.因子
变量可以归结为名义型、有序型或连续型变量。名义型和有序型变量在R中成为因子(factor)。因子在R中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现。
函数factory()以一个整数向量的形式存储类别值,整数的取值范围是[1...k](k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
> diabetes <- c("Type1","Type2","Type1","Type1")
> diabetes <- factor(diabetes) #将此向量存储为(1,2,1,1)默认并内在关联1=Type1,2=Type2。
> diabetes
[1] Type1 Type2 Type1 Type1
Levels: Type1 Type2
也可以通过指定levels选项来覆盖默认排序。例如:
> status <- factor(status,order=TRUE,levels=c("Poor","Improved","Excellent"))
> status
[1] Poor Improved Excellent Poor
Levels: Poor < Improved < Excellent
因子的使用:
> patientID <- c(1,2,3,4) #向量形式输入数据
> age <- c(25,34,28,52)
> diabetes <- c("Type1","Type2","Type1","Type1")
> status <- c("Poor","Improved","Excellent","Poor")
> patientdata <- data.frame(patientID,age,diabetes,status)
> diabetes <- factor(diabetes)
> status <- factor(status,order=TRUE,levels=c("Poor","Improved","Excellent"))
> patientdata <- data.frame(patientID,age,diabetes,status)
> str(patientdata) #显示对象结构
'data.frame ': 4 obs. of 4 variables:
$ patientID : num 1 2 3 4
$ age : num 25 34 28 52
$ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
$ status : Ord.factor w/ 3 levels "Poor"<"Improved"<..: 1 2 3 1
> summary(patientdata) #显示对象的统计概要
patientID age diabetes status
Min. :1.00 Min. :25.00 Type1:3 Poor :2
1st Qu.:1.75 1st Qu.:27.25 Type2:1 Improved :1
Median :2.50 Median :31.00 Excellent :1
Mean :2.50 Mean :34.75
3rd Qu.:3.25 3rd Qu.:38.50
Max. :4.00 Max. :52.00
class函数查看数据类型。
6.数组
基本格式:array(data=NA, dim= length(data), dimnames=NULL)
data表示数据,可以为空;dim表示维数,dimnames可以更改数组的维度名称。
见下例:
> (xx<-array(1:24,c(3,4,2)))
, , 1
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
, , 2
[,1] [,2] [,3] [,4]
[1,] 13 16 19 22
[2,] 14 17 20 23
[3,] 15 18 21 24
> xx[1,3,2]
[1] 19
> xx[2,1:3,1]
[1] 2 5 8
> xx[,2,]
[,1] [,2]
[1,] 4 16
[2,] 5 17
[3,] 6 18
> dim(xx)
[1] 3 4 2
> zz <- 1:12
> dim(zz)=c(2,2,3)
> zz
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
7.列表
基本格式:list(变量1=分量1,变量2=分量2,...)
> x <- c(1,1,2,3,4,4,4)
> y <- c("女","男","男","女","女","女","男")
> z <- c(80,83,75,83,85,64,85)
> (LST<-list(class=x,sex=y,score=z))
$class
[1] 1 1 2 3 4 4 4
$sex
[1] "女" "男" "男" "女" "女" "女" "男"
$score
[1] 80 83 75 83 85 64 85
> LST[[3]] #返回列表的第三个成分的值;[[...]]选择单个元素的操作符
[1] 80 83 75 83 85 64 85
> LST[[2]][1:3]
[1] "女" "男" "男"
> LST$score
[1] 80 83 75 83 85 64 85
> LST$sc #成为名可以缩写到可以区分的最短程度
[1] 80 83 75 83 85 64 85
> LST[3] #[...]通用下标操作符
$score
[1] 80 83 75 83 85 64 85
> length(LST)
[1] 3
> mode(LST)
[1] "list"
> names(LST)
[1] "class" "sex" "score"
另:
注意0!=0以及求余和求整的情况
RLearning第2弹:创建数据集的更多相关文章
- R语言实战读书笔记2—创建数据集(上)
第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字 ...
- 第一课 导入库 - 创建数据集 - CSV读取 - 导出 - 查找最大值 - 绘制数据
第1课 创建数据 - 我们从创建自己的数据集开始分析.这可以防止阅读本教程的最终用户为得到下面的结果而不得不下载许多文件.我们将把这个数据集导出到一个文本文件中,这样您就可以获得从文本文件中一些拉取数 ...
- R实践 第二篇:创建数据集
准备数据是数据分析的第一步,由数据构成集合,我们称作数据集,数据集的结构是行列式的,行表示观测,列表示变量.把数据读入到R中,转换为合适的数据结构,能够提高数据分析的效率.在数据分析中,常用的存储数据 ...
- 《R语言实战》读书笔记--第二章 创建数据集
2.1数据集的概念 变量的类型是不同的,比如标示符.日期变量.连续变量.名义变量.有序型变量等,记得数据挖掘导论中有专门的描述. R可以处理的数据类型包括了数值型.字符型.逻辑型.复数型(虚数).原生 ...
- RLearning第1弹:初识R语言
R作为一种统计分析软件,是集统计分析与图形显示于一体的.体积小.开源.很强的互动性.自从学了R本人就很少再用matlab了... 一.R语言由函数和赋值构成. R使用<-(最好养成使用习惯),而 ...
- R语言实战(二) 创建数据集
2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable),数据库分析师则称其为记录(record)和字段(field),数据 ...
- [读书笔记] R语言实战 (二) 创建数据集
R中的数据结构:标量,向量,数组,数据框,列表 1. 向量:储存数值型,字符型,或者逻辑型数据的一维数组,用c()创建 ** R中没有标量,标量以单元素向量的形式出现 2. 矩阵:二维数组,和向量一 ...
- tensorflow-- Dataset创建数据集对象
tf.data模块包含: experimental 模块 Dataset 类 FixedLengthRecordDataset 类 TFRecordDataset 类 TextLineDataset ...
- 【猫狗数据集】pytorch训练猫狗数据集之创建数据集
猫狗数据集的分为训练集25000张,在训练集中猫和狗的图像是混在一起的,pytorch读取数据集有两种方式,第一种方式是将不同类别的图片放于其对应的类文件夹中,另一种是实现读取数据集类,该类继承tor ...
随机推荐
- STL学习笔记(第四章 通用工具)
本章讲解C++标准程序库中的通用工具.它们是由短小精干的类和函数构成. Pairs(对组) class pair可以将两个值视为一个单元.STL内多处使用了pair.尤其容器map和multimap, ...
- IP数据库生成器
代码地址如下:http://www.demodashi.com/demo/12688.html 项目放在github上,python版本ipdb_creator,java版本ip-locator. 项 ...
- day14—JQuery编程基础
JQuery 1.什么是jQuery jQuery是一个优秀的JavaScript框架.一个轻量级的JavaScript类库.jQuery的核心理念是Write less.Do more. 使用jQu ...
- GO语言使用开源SSH模拟终端
<pre name="code" class="plain">package main import ( "go-ssh/ssh" ...
- codeforces #364d As Fast As Possible
题意:一群学生,要到离这里为l的地方去.有一辆车,车只有k个座位.人和车的速度分别v1,v2,问你所有人到达的最小时间. 思路:数学题.最小时间就是要求所有同学同时到达.每个同学最多上一次车.那么显然 ...
- freemarker在xml文件中遍历list数据
delete from pub_channelpackage where channelcode = :channelcode and channeltype = :channeltype ...
- 在Linux中配置DNS的正确方式
链接:http://ccl.cse.nd.edu/operations/condor/hostname.shtml Common Hostname Problem on Linux Newly ins ...
- redhat安装中文man手册
1.下载中文man手册 http://download.chinaunix.net/download.php?id=13232&ResourceID=6537 2.上传至服务器并解压 tar ...
- 怎样解决mysql最后一步提示未响应
1.在开始菜单下,点击运行,输入regedit,进入注册表编辑器目录下 2.在注册表编辑器里system下找到controlset001,controlset002,currentcontrolset ...
- UFLDL深度学习笔记 (五)自编码线性解码器
UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论&q ...