博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R语言学习笔记(2)
阅读量:7284 次
发布时间:2019-06-30

本文共 4402 字,大约阅读时间需要 14 分钟。

第二章:创建数据集

一 R中的数据

二 数据的输入

 

 

一R中的数据

数据集:通常是由数据构成的一个矩形数组,行表示观测,列表示变量

R可以处理的数据类型:数值型、字符型、逻辑型、复数型(虚数)、原生型(字节)

R将类别型(包括名义型和有序型)变量称为因子

数据结构

R有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表

在R中,对象是指可以赋值给变量的任何事物

向量

向量是用于存储数值型、字符型、或逻辑型数据的一堆数组。用函数c()可以创建向量。单个向量的数据必须拥有相同的类型(数值型,字符型或逻辑型)

1 > a<-c(1,2,3,4,5,6,7)2 > a3 [1] 1 2 3 4 5 6 74 > b<-c("one","two","three")5 > b6 [1] "one"   "two"   "three"7 > c<-c(TRUE,FALSE,TRUE,TRUE,FALSE)

 

通过方括号访问向量中的元素 1 > a<-c(6,5,4,3,2,1)2 > a[3]3 [1] 44 > a[c(1,3,5)]5 [1] 6 4 26 > a[2:6]7 [1] 5 4 3 2 1

矩阵(是一个二维数组,只是每个元素都是相同的模式)

一般格式

mymatrix<-matrix(vector,nrow=number_of_rows, ncol=number_of_columns,

byrow=logical_value, dimnames=list(char_vector_names,char_vector_colnames))

vector包含了矩阵的元素,nrow和ncol用于指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。

byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认情况是按列填充

代码2-1  1 > y<-matrix(1:20,nrow=5,ncol=4) 2 > y 3      [,1] [,2] [,3] [,4] 4 [1,]    1    6   11   16 5 [2,]    2    7   12   17 6 [3,]    3    8   13   18 7 [4,]    4    9   14   19 8 [5,]    5   10   15   20 9 > cells<-c(1,26,24,68)10 > rnames<-c("R1","R2")11 > cnames<-c("C1","C2")12 > mymatrix<-matrix(cells,nrow=2,ncol=2,byrow=TRUE,                       dimnames=list(rnames,cnames))13 > mymatrix14    C1 C215 R1  1 2616 R2 24 6817 > mymatrix<-matrix(cells,nrow = 2,ncol = 2,byrow = FALSE,18 +                  dimnames = list(rnames,cnames))19 > mymatrix20    C1 C221 R1  1 2422 R2 26 68

 

访问矩阵中的元素 代码2-2 1 > x<-matrix(1:10,nrow=2)2 > x[2,]3 [1]  2  4  6  8 104 > x[1,4]5 [1] 76 > x[1,c(4,5)]7 [1] 7 9

数组

数组与矩阵类似,但维度可以大于2。通过array()函数实现,形式如下:

myarray<-array(vector,dimensions,dimnames)

其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,dimnames是可选的、各维度名称标签的列表。

代码2-3  1 > dim2<-c("B1","B2","B3") 2 > dim1<-c("A1","A2") 3 > dim2<-c("B1","B2","B3") 4 > dim3<-c("C1","C2","C3","C4") 5 > z<-array(1:24,c(2,3,4),dimnames = list(dim1,dim2,dim3)) 6 > z 7 , , C1 8  9    B1 B2 B310 A1  1  3  511 A2  2  4  612 13 , , C214 15    B1 B2 B316 A1  7  9 1117 A2  8 10 1218 19 , , C320 21    B1 B2 B322 A1 13 15 1723 A2 14 16 1824 25 , , C426 27    B1 B2 B328 A1 19 21 2329 A2 20 22 24

数据框

数据框通过data.frame()创建

mydata<-data.frame(col1,col2,col,……)

其中列向量col1,col2,....可以为任何类型(如字符型,数值型或逻辑型)。每一列的名称可由函数names指定。

代码2-4  1 > patientID<-c(1,2,3,4) 2 > age<-c(25,34,28,52) 3 > diabetes<-c("Type1","Type","Type1","Type1") 4 > status<-c("Poor","Improved","Excellent","Poor") 5 > patientdata<-data.frame(patientID,age,diabetes,status) 6 > patientdata 7   patientID age diabetes    status 8 1         1  25    Type1      Poor 9 2         2  34     Type  Improved10 3         3  28    Type1 Excellent11 4         4  52    Type1      Poor

 

选取数据框中的元素 代码2-5  1 > patientdata[1:2] 2   patientID age 3 1         1  25 4 2         2  34 5 3         3  28 6 4         4  52 7 > patientdata[c("diabetes","status")] 8   diabetes    status 9 1    Type1      Poor10 2     Type  Improved11 3    Type1 Excellent12 4    Type1      Poor 1 > patientdata$age    # $符号用来选取一个给定数据框中的某个特定变量
2 [1] 25 34 28 523 > table(patientdata$diabetes,patientdata$status)4        5         Excellent Improved Poor6   Type          0        1    07   Type1         1        0    2

attach()可以将数据框添加到R的搜索路径中

detach()将数据从搜索路径中移除

with()

列表

列表可用函数list()创建列表

mylist<-list(object1,object2,....)

or

mylist<-list(name1=object1,name2=object2,...)

代码2-7  1 > g<-"my first list" 2 > h<-c(25,26,18,39) 3 > j<-matrix(1:10,nrow = 5) 4 > k<-c("one","two","three") 5 > mylist<-list(title=g,ages=h,j,k) 6 > mylist 7 $title 8 [1] "my first list" 9 10 $ages11 [1] 25 26 18 3912 13 [[3]]14      [,1] [,2]15 [1,]    1    616 [2,]    2    717 [3,]    3    818 [4,]    4    919 [5,]    5   1020 21 [[4]]22 [1] "one"   "two"   "three"23 24 > mylist[[2]]25 [1] 25 26 18 3926 > mylist[["ages"]]27 [1] 25 26 18 39

二 数据的输入(键盘,文本文件,统计软件,数据库等)

数据的更改:edit()函数   

                 fix()函数

从带分隔符的文本文件导入数据:read.table()

mydata<-read.table(file,header=logical_value,

                             sep="delimiter",row.names="name")

其中file是一个带分隔符的ASCII文本文件,header是一个表明首行是否包含了变量的名称的逻辑值,sep用来指定分割数据的分割符,row.names是一个可选参数,用以指定一个或多个表示行标识符的变量

导入excel数据:先在excel中将其导出为逗号分隔文件(csv),然后导入到R中

                     下载安装xlsx包,然后read。xlsx(file,n)n为要导入的工作表序号

mydataframe<-read.xlsx(workbook,1) 

从网页抓取数据:使用readlines()函数下载网页,然后用如grep()和gsub()一类函数处理

导入spass数据:通过foreign包中的函数read.spss()导入R中,

                       也可以使用Hmisc包中的spss.get()函数

mydataframe()<-spss.get("mydata.sav",use.valuel.labels=TRUE) use.value.labels=TRUE表示函数将带有值标签的变量导入为R中水平的相应因子。

 

转载于:https://www.cnblogs.com/wujiadong2014/p/4840701.html

你可能感兴趣的文章
amaze ui响应式辅助
查看>>
C++getline使用
查看>>
Spinner使用二
查看>>
android 隐藏输入法键盘
查看>>
Android jni 中打印logcat日志
查看>>
SSL和keystore生成、导入等配置
查看>>
The Eagles Hotel California Lyrics
查看>>
软件工程——课程评价
查看>>
OpenStack Placement Project
查看>>
微信支付问题
查看>>
购买类目的概率预测
查看>>
Ajax Step By Step2
查看>>
codeforces 701 B. Cells Not Under Attack
查看>>
当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
查看>>
Creating a Custom Page Layout in SharePoint 2013
查看>>
mysql foreignkey
查看>>
Django 中的自定义分页标签
查看>>
[转]ASP.NET自定义控件复杂属性声明持久性浅析
查看>>
PAT (Basic Level) Practise (中文)-卡拉兹(Callatz)猜想
查看>>
第八周进度总结
查看>>