分享

R语言快速入门:数据结构 生成数据 数据引用 读取外部数据

 西北望msm66g9f 2019-08-31
目录
1 数据结构

1.1 向量

1.2 矩阵

1.3 数据框

2 生成数据

2.1 c() 连接单个数据

2.2 ':' 生成1/-1等差向量

2.3 seq() 生成等距向量

2.4 rep() 生成重复数据

3 数据引用

3.1 引用行/引用列

3.2 引用单个元素

3.3 引用子矩阵

3.4 变量名引用

4 读取外部数据(表)

4.1 更改工作目录

4.2 read.table

4.3 read.csv


正文

1 数据结构

本节主要讲向量、矩阵、数据框三种数据结构(入门必须学)

1.1 向量

用于存储数值型、字符型或逻辑型数据的一维数组,常用'c()'创建。例如:
> c(1,2,8)#生成包含1,2,8的一维数组(向量)[1] 1 2 8

1.2 矩阵

二维数组具有行列的概念
#矩阵用法matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL#表示生成1行,1列的一个矩阵,其中仅仅包含一个元素“NA”
#---示例---#> matrix(c(1,2,311,12,13), nrow = 2, ncol = 3, byrow = TRUE, dimnames = list(c('row1''row2'), c('C.1''C.2''C.3'))) C.1 C.2 C.3row1 1 2 3row2  11  12  13#nrow = 2和ncol = 3 定义2x3的2行3列矩阵#byrow = TRUE 是控制矩阵中的数据c(1,2,3, 11,12,13)按照行的顺序排列,默认按照列排列#dimnames = list(c('row1', 'row2'), c('C.1', 'C.2', 'C.3')) 定义矩阵行名和列名

1.3 数据框

主要用于向量/矩阵合并,可以将不通类型的以向量以及矩阵,按照一定结构存储在数据框中。
> x <- c(11:20)  #其中' <- '是赋值的意思,将向量c(11:20)赋值给对象x> y <- c(1:10)> data.frame(xf = x, yf = x) #将向量x和y合并存储到数据框中,并重命名为xf和yf xf yf1 11 112 12 123 13 134 14 145 15 156 16 167 17 178 18 189 19 1910 20 20
数组与矩阵类似,但其维度大于2.由于R入门基本接触不到3维以上数组的概念,目前暂不展开,等入门后在反过来看。

2 生成数据

本节主要讲“c()”、':'、seq、rep等四种数据生成的内容(入门必须学)

2.1 “c”  连接单个数据

> c(1,2,8)#生成包含1,2,8的向量

2.2 “:“ 生成1/-1等差向量

> 1.1:10[1] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1> 1:10 [1] 1 2 3 4 5 6 7 8 9 10> 10:1 #如x=1:10(递减,如y=10:1) [1] 10 9 8 7 6 5 4 3 2 1

2.3 seq 生成等距向量

①seq(起点,终点,步长); 
②seq(length=9, from=1, to=5)
> seq(1,10,2)[1] 1 3 5 7 9> seq(length=5,1,10)[1] 1.00 3.25 5.50 7.75 10.00
#seq(x)相当于1:length(x);length(x)为0时,返回integer(0)> seq(10) [1] 1 2 3 4 5 6 7 8 9 10> seq(c())integer(0)

2.4 rep(x,n)   重复 

将x重复n次,可使用each限定为依次重复形式
rep(1:3,3)rep(1:3,each=3)
#> rep(1:3,3)#[1] 1 2 3 1 2 3 1 2 3#> rep(1:3,each = 3)#[1] 1 1 1 2 2 2 3 3 3
额外补充:R语言|第2讲:生成数据


3 数据引用(以矩阵为例)

数据引用必须懂“对指定维度数据的引用”
(以二维矩阵为例)

3.1 行引用/列引用

例如:引用第一行数据,引用第一列数据,引用第一行第一列的数据。
> data(iris) #鸢尾花数据集> dim(iris) #读取iris数据集的维度数值,以“行数 列数 ”形式展示[1] 150   5   #说明iris数据集是150 x 5的二维数组

3.2 行列值引用:数据集[行值,列值]

如行值或列值仅1个数字,表示仅引用该行或列的数据
iris[1,]  #引用第1行数据 Sepal.Length Sepal.Width Petal.Length Petal.Width Species1          5.1         3.5          1.4         0.2  setosa
head(iris[,1],5) #引用第1列的数据,其中因数据过长,使用head()函数取前5个数字[1] 5.1 4.9 4.7 4.6 5.0

3.3 引用子矩阵

如行值或列值为组合数据,则表示引用组合行列交叉位置的数据
> iris[1:5,1:3] Sepal.Length Sepal.Width Petal.Length1 5.1 3.5 1.42 4.9 3.0 1.43 4.7 3.2 1.34 4.6 3.1 1.55 5.0 3.6 1.4

3.4 变量名引用

(多用于二维数组中):数据集$变量名
> head(iris$Petal.Length,5)[1] 1.4 1.4 1.3 1.5 1.4

4 读取外部数据(以.csv表为例)

本节主要讲如何读取外部数据(表)

(以.csv表为例)


4.1 设置工作目录

R语言中数据的输入需要设置数据读取的路径,一般将数据文件放到工作目录下,这样直接就可以通过read.table等读取数据文档(不许要设置路径)。
方法一:setwd()
setwd('E:/')  #设置当前工作目录为'E:/'
getwd()  #读取当前工作空间的工作目录(文件读取保存路径)
> getwd()  #读取当前工作空间的工作目录(文件读取保存路径)[1] 'C:/Users/ysl/Documents'> setwd('E:/') #设置当前工作目录为'E:/'> getwd() #再次使用getwd()函数即可查看是否设置成功[1] 'E:/'
方法二:通过R-gui菜单栏设置(文件-改变工作目录)

4.2 read.table() 

#读取带分隔符的文本文件。read.table()函数是R最基本函数之一,读取带分隔符的文本/表格文件。
#Usageread.table(file, header = FALSE, sep = '', quote = '\''', dec = '.', numerals = c('allow.loss', 'warn.loss', 'no.loss'), row.names, col.names, as.is = !stringsAsFactors, na.strings = 'NA', colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = '#', allowEscapes = FALSE, flush = FALSE, stringsAsFactors = default.stringsAsFactors(), fileEncoding = '', encoding = 'unknown', text, skipNul = FALSE)read.csv(file, header = TRUE, sep = ',', quote = '\'',dec = '.', fill = TRUE, comment.char = '', ...)
read.csv2(file, header = TRUE, sep = ';', quote = '\'',dec = ',', fill = TRUE, comment.char = '', ...)
read.delim(file, header = TRUE, sep = '\t', quote = '\'',dec = '.', fill = TRUE, comment.char = '', ...)
read.delim2(file, header = TRUE, sep = '\t', quote = '\'',            dec = ',', fill = TRUE, comment.char = '', ...)
常用参数的说明如下:
(1)file:file是一个带分隔符的ASCII文本文件。①绝对路径或者相对路径。一定要注意,在R语言中\是转义符,所以路径分隔符需要写成'\\'或者“/”。所以写成“C:\\myfile\\myfile.txt”或者“C:/myfile/myfile.txt”即可。②使用file.choose(),弹出对话框,自动选择文件位置。例如:read.table(file.choose(),...)。
(2)header:一个表示文件是否在第一行包含了变量的逻辑型变量。如果header设置为TRUE,则要求第一行要比数据列的数量少一列。
(3)sep分开数据的分隔符。默认sep=''read.table()函数可以将1个或多个空格、tab制表符、换行符或回车符作为分隔符。常见空白分隔符有:空格,制表符,换行符
sep=” ”;sep = “\t”;sep = “\n”
(4)stringsAsFactors 逻辑值,标记字符向量是否需要转化为因子,默认是TRUE。stringsAsFactors = F意味着,“在读入数据时,遇到字符串之后,不将其转换为factors,仍然保留为字符串格式”。
(5)encoding 设定输入字符串的编码方式。
#读取txt文档
> df<- read.table('data.txt')> dfV1 V21 x y2 1 23 3 44 5 6> df <- read.table('data.txt',header = T)> dfx y1 1 22 3 43 5 6

#样式1:直接读取数据
> df <- read.table('data.csv') #直接读取数据> head(df)V11 ID,Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species2 1,5.1,3.5,1.4,0.2,setosa3 2,4.9,3,1.4,0.2,setosa4 3,4.7,3.2,1.3,0.2,setosa5 4,4.6,3.1,1.5,0.2,setosa6 5,5,3.6,1.4,0.2,setosa

#样式2:读数+首行表头
> df <- read.table('data.csv',header = T)  #读数+首行表头> head(df)ID.Sepal.Length.Sepal.Width.Petal.Length.Petal.Width.Species1 1,5.1,3.5,1.4,0.2,setosa2 2,4.9,3,1.4,0.2,setosa3 3,4.7,3.2,1.3,0.2,setosa4 4,4.6,3.1,1.5,0.2,setosa5 5,5,3.6,1.4,0.2,setosa6 6,5.4,3.9,1.7,0.4,setosa
#样式3:读数+首行表头+','逗号分割
> df <- read.table('data.csv',header = T,sep=',')  #读数+首行表头+','逗号分割> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 1 5.1 3.5 1.4 0.2 setosa2 2 4.9 3.0 1.4 0.2 setosa3 3 4.7 3.2 1.3 0.2 setosa4 4 4.6 3.1 1.5 0.2 setosa5 5 5.0 3.6 1.4 0.2 setosa6 6 5.4 3.9 1.7 0.4 setosa> summary(df)ID Sepal.Length Sepal.Width Petal.Length Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000 1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 Median : 75.50 Median :5.800 Median :3.000 Median :4.350 Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758 3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900 Petal.Width Species Min. :0.100 setosa :50 1st Qu.:0.300 versicolor:50 Median :1.300 virginica :50 Mean :1.199 3rd Qu.:1.800 Max. :2.500
#样式4:读数+首行表头+','逗号分割+字符转因子factor
> df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)##读数+首行表头+','逗号分割+字符转因子factor> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 1 5.1 3.5 1.4 0.2 setosa2 2 4.9 3.0 1.4 0.2 setosa3 3 4.7 3.2 1.3 0.2 setosa4 4 4.6 3.1 1.5 0.2 setosa5 5 5.0 3.6 1.4 0.2 setosa6 6 5.4 3.9 1.7 0.4 setosa
#请注意species结果与样式3中结果的差异> summary(df) ID Sepal.Length Sepal.Width Petal.Length Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000 1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 Median : 75.50 Median :5.800 Median :3.000 Median :4.350 Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758 3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900 Petal.Width Species Min. :0.100 setosa :50 1st Qu.:0.300 versicolor:50 Median :1.300 virginica :50 Mean :1.199 3rd Qu.:1.800  Max.   :2.500  

4.3 read.csv()  

#读取.csv格式数据,read.table的一种特定应用。read.csv() 读取逗号分割数据文件,read.table()的一种特定应用。默认逗号分割,header=T,stringsAsFactor = T
df <- read.csv('data.csv') #等价与下df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)#第一行和第二行等价
read.csv(file, header = TRUE, sep = ',', quote = '\'', dec = '.', fill = TRUE, comment.char = '', ...)
#实例> df <- read.csv('data.csv') #相当于df <- read.table('data.csv',header = T,sep=',',stringsAsFactor = T)> head(df)ID Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 1 5.1 3.5 1.4 0.2 setosa2 2 4.9 3.0 1.4 0.2 setosa3 3 4.7 3.2 1.3 0.2 setosa4 4 4.6 3.1 1.5 0.2 setosa5 5 5.0 3.6 1.4 0.2 setosa6  6          5.4         3.9          1.7         0.4  setosa

喜欢你就转发一下吧

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多