作者: 徐涛 ,19年应届毕业生,专注于珊瑚礁研究,喜欢用R各种清洗数据。
知乎:parkson
关于对数据的理解,大众理解可能就是一些数字,但是一个人的日常行为包括购物,饮食,足迹,都是数据,总结来说,不管是数字还是行为习惯,凡是能反映信息的都是数据;这是在第一关中对于数据概念的阐述。
R是对数据加工的一个工具,包括分析,可视化等。我们回归到本质,这些数据在R中是如何储存、读取、运用的?这真是我们本关所要讨论学习的。①数据结构②数据的输入
一、数据结构
R拥有的多种用于存储数据的对象类型,包括:标量、向量(concatenate)、矩阵(matrix)、数组(array)、数据框(data. frame)、列表(list),数据以这几种类型被存储起来。
注:R中没有标量,标量只是以单元素向量的形式出现。
① 标量
标量是只含有一个元素的向量,例如
> a<-3 > a [1] 3 > b<-"welcome to R" > b [1] "welcome to R" > c<-TRUE > c [1] TRUE
② 向量c()
向量是可以存储数值型、字符型或逻辑型数据的一维数组,单个向量中的数据必须拥有相同的数据类型。
> a1<-c(12,23,33,43) > a1 [1] 12 23 33 43 > mode(a1)#数值型 [1] "numeric" > a2<-c("hello","hi","a") > a2 [1] "hello" "hi" "a" > mode(a2)#字符型 [1] "character" > a3<-c(TRUE,FALSE,FALSE) > a3 [1] TRUE FALSE FALSE > mode(a3)#逻辑型 [1] "logical"
③ 矩阵matrix()
函数matrix(vector,nrow,ncol,byrow,dimnames=list(rnames,cnames))
矩阵是二维的,和向量类似,矩阵中也仅能包含一种数据类型。
> matrix(1:20,nrow=4,ncol=5) [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20
矩阵中默认按列填充,byrow=FALSE(如上,一般不写),手动设置元素按行填充命令:byrow=TRUE
> matrix(1:20,nrow=4,ncol=5,byrow=TRUE) [,1] [,2] [,3] [,4] [,5] [1,] 1 2 3 4 5 [2,] 6 7 8 9 10 [3,] 11 12 13 14 15 [4,] 16 17 18 19 20
我们对矩阵的行列进行手动命名:
> t<-c(1,3,5,7,8,9,4,6,2,3,9,0,4,3,2,5) > rnames<-c("A1","A2","A3","A4") > cnames<-c("B1","B2","B3","B4") > u<-matrix(t,4,4,byrow=TRUE,dimnames=list(rnames,cnames)) > u B1 B2 B3 B4 A1 1 3 5 7 A2 8 9 4 6 A3 2 3 9 0 A4 4 3 2 5
注:向量是一维的,矩阵是二维的,向量和矩阵中的元素只能是一种数据类型。
④ 数组array()
函数array(vector,dimensions,dimnames),vector是数组中的元素,dimensions是一个数值型向量,规定各个维度下标的最大值。
> q<-array(1:24,c(2,3,4),dimnames=list(c("A1","A2"),c("B1","B2","B3"),c("C1","C2","C3","C4")))#c(2,3,4),在空间坐标系里面可以理解为:x坐标是2,y坐标是3,z坐标是4 > q , , C1 B1 B2 B3 A1 1 3 5 A2 2 4 6 , , C2 B1 B2 B3 A1 7 9 11 A2 8 10 12 , , C3 B1 B2 B3 A1 13 15 17 A2 14 16 18 , , C4 B1 B2 B3 A1 19 21 23 A2 20 22 2
对于向量、矩阵、数组的理解为笛卡尔坐标系,一维,二维,三维。且和向量矩阵一样,数组中的数据也只能拥有一种数据类型。
⑤ 数据框data.frame()
数据框中不同的列可以包含不同类型的数据(数值型,字符型,逻辑型等),同一列要求具有相同类型的数据。
直接调用了R安装自带的一个数据文件,数据框的格式如下。
> mtcars mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
⑥ 列表list()
列表是一些对象的有序集合,允许你整合若干对象到单个对象名下。一个列表中可能是若干向量、举证、数据框的组合。
函数list()创建列表。
二、数据的输入
第一部分我们了解数据在R中存储的结构,第二部分我们学习如何将数据导入R中,包括:
①:键盘输入数据
R中的函数edit()会自动调用一个允许手动输入数据的文本编辑器。
例如:
> firstdata<-data.frame(dose=numeric(0),drugA=numeric(0),drugB=numeric(0)) > mydata<-edit(firstdata)
注:(1)创建一个空数据框(或矩阵),其中变量名和变量的模式需与理想中的最终数据一致。
(2)调用文本编辑器,输入数据。
②:导入txt文件
我一般喜欢将需要导入的文件直接放在工作目录里面(工作目录不要出现汉字)
> #查找当前工作目录 > getwd() [1] "C:/Users/徐涛/Documents" > #改变工作目录 > setwd("E:/Data For R/RData") > #查找当前工作目录 > getwd() [1] "E:/Data For R/RData" > a<-read.table("income.txt") > a V1 V2 V3 1 t x y 2 1990 2822 2937 3 1991 2990 3149 4 1992 3297 3483 5 1993 4225 4349 6 1994 5127 5218 7 1995 6038 6242 8 1996 6910 7408 9 1997 8234 8651 10 1998 9363 9876 11 1999 10683 11444 12 2000 12582 13395 13 2001 15301 16386
③:导入excel数据
> install.packages("xlsx") --- 在此連線階段时请选用CRAN的鏡子 --- 还安装相依关系‘rJava’, ‘xlsxjars’ 试开URL’https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/contrib/3.3/rJava_0.9-8.zip' Content type 'application/zip' length 713967 bytes (697 KB) downloaded 697 KB 试开URL’https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/contrib/3.3/xlsxjars_0.6.1.zip' Content type 'application/zip' length 9485184 bytes (9.0 MB) downloaded 9.0 MB 试开URL’https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/contrib/3.3/xlsx_0.5.7.zip' Content type 'application/zip' length 401439 bytes (392 KB) downloaded 392 KB 程序包‘rJava’打开成功,MD5和检查也通过 程序包‘xlsxjars’打开成功,MD5和检查也通过 程序包‘xlsx’打开成功,MD5和检查也通过 下载的二进制程序包在 C:\Windows\Temp\Rtmp8G83Je\downloaded_packages里 >library(xlsx) >y<-read.xlsx(income,1)
一句话送给大家:很多时候方向比努力更重要,一个正确的学习方法+一个明确的方向会让事情或者学习事半功倍。
本文由R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 数据结构 – 用于构建文件系统的数据结构?
- 数据库索引背后的数据结构
- 基础数据结构及js数据存储
- 荐 用Python解决数据结构与算法问题(三):线性数据结构之栈
- 无需理解数据结构也不需编程技能 Tableau如何通过数据问答再降低数据使用门槛
- 是否存在一个包含.NET数据集的数据结构?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Development with Rails, Third Edition
Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2009-03-17 / USD 43.95
Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including new support for RESTful applications, new generator options, and so on. And, as importantly, we’ve a......一起来看看 《Agile Web Development with Rails, Third Edition》 这本书的介绍吧!