R中数据结构与数据的输入

栏目: R语言 · 发布时间: 6年前

作者: 徐涛 ,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)

R中数据结构与数据的输入

注:(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 中国大陆许可协议 进行许可。

转载、引用前需联系作者,并署名作者且注明文章出处。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Agile Web Development with Rails, Third Edition

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》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具