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

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。常被用于统计学、计量分析等领域。接下来讲一下我个人认为的R入门知识。

目录

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 数据结构

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


640?

1.1 向量

640?

用于存储数值型、字符型或逻辑型数据的一维数组,常用"c()"创建。例如:

> c(1,2,8)#生成包含1,2,8的一维数组(向量)	
[1] 1 2 8


640?

1.2 矩阵

640?

二维数组具有行列的概念

#矩阵用法	
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL) #表示生成1行,1列的一个矩阵,其中仅仅包含一个元素“NA”	

	
#---示例---#	
> matrix(c(1,2,3, 11,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.3	
row1   1   2   3	
row2  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")) 定义矩阵行名和列名


640?

1.3 数据框

640?

主要用于向量/矩阵合并,可以将不通类型的以向量以及矩阵,按照一定结构存储在数据框中。

> x <- c(11:20)  #其中" <- "是赋值的意思,将向量c(11:20)赋值给对象x	
> y <- c(1:10)	
> data.frame(xf = x, yf = x) #将向量x和y合并存储到数据框中,并重命名为xf和yf	
   xf yf	
1  11 11	
2  12 12	
3  13 13	
4  14 14	
5  15 15	
6  16 16	
7  17 17	
8  18 18	
9  19 19	
10 20 20

数组与矩阵类似,但其维度大于2.由于R入门基本接触不到3维以上数组的概念,目前暂不展开,等入门后在反过来看。

2 生成数据

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

640

2.1 “c”  连接单个数据

640

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


640?

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

640?

> 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

640?

2.3 seq 生成等距向量

640?

①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)

640?

2.4 rep(x,n)   重复 

640?

将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 数据引用(以矩阵为例)

数据引用必须懂“对指定维度数据的引用”

(以二维矩阵为例)

640?

3.1 行引用/列引用

640?

例如:引用第一行数据,引用第一列数据,引用第一行第一列的数据。

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

640?

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

640?

如行值或列值仅1个数字,表示仅引用该行或列的数据

> iris[1,]  #引用第1行数据	
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species	
1          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


640?

3.3 引用子矩阵

640?

如行值或列值为组合数据,则表示引用组合行列交叉位置的数据

> iris[1:5,1:3]	
  Sepal.Length Sepal.Width Petal.Length	
1          5.1         3.5          1.4	
2          4.9         3.0          1.4	
3          4.7         3.2          1.3	
4          4.6         3.1          1.5	
5          5.0         3.6          1.4

640?

3.4 变量名引用

640?

(多用于二维数组中):数据集$变量名

> head(iris$Petal.Length,5)	
[1] 1.4 1.4 1.3 1.5 1.4

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

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

(以.csv表为例)


640?

4.1 设置工作目录

640?

R语言中数据的输入需要设置数据读取的路径,一般将数据文件放到工作目录下,这样直接就可以通过read.table等读取数据文档(不许要设置路径)。

 

方法一:setwd()

setwd("E:/")  #设置当前工作目录为"E:/"

getwd()  #读取当前工作空间的工作目录(文件读取保存路径)

> getwd()  #读取当前工作空间的工作目录(文件读取保存路径)	
[1] "C:/Users/ysl/Documents"	
> setwd("E:/") #设置当前工作目录为"E:/"	
> getwd() #再次使用getwd()函数即可查看是否设置成功	
[1] "E:/"

640?wx_fmt=png

方法二:通过R-gui菜单栏设置(文件-改变工作目录)

640?wx_fmt=png

640?

4.2 read.table() 

640?

#读取带分隔符的文本文件。read.table()函数是R最基本函数之一,读取带分隔符的文本/表格文件。

read.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")	
> df	
V1 V2	
1  x  y	
2  1  2	
3  3  4	
4  5  6	
> df <- read.table("data.txt",header = T)	
> df	
x y	
1 1 2	
2 3 4	
3 5 6


#样式1:直接读取数据

> df <- read.table("data.csv")  #直接读取数据	
> head(df)	
V1	
1 ID,Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species	
2                                     1,5.1,3.5,1.4,0.2,setosa	
3                                       2,4.9,3,1.4,0.2,setosa	
4                                     3,4.7,3.2,1.3,0.2,setosa	
5                                     4,4.6,3.1,1.5,0.2,setosa	
6                                       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.Species	
1                                     1,5.1,3.5,1.4,0.2,setosa	
2                                       2,4.9,3,1.4,0.2,setosa	
3                                     3,4.7,3.2,1.3,0.2,setosa	
4                                     4,4.6,3.1,1.5,0.2,setosa	
5                                       5,5,3.6,1.4,0.2,setosa	
6                                     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 Species	
1  1          5.1         3.5          1.4         0.2  setosa	
2  2          4.9         3.0          1.4         0.2  setosa	
3  3          4.7         3.2          1.3         0.2  setosa	
4  4          4.6         3.1          1.5         0.2  setosa	
5  5          5.0         3.6          1.4         0.2  setosa	
6  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 Species	
1  1          5.1         3.5          1.4         0.2  setosa	
2  2          4.9         3.0          1.4         0.2  setosa	
3  3          4.7         3.2          1.3         0.2  setosa	
4  4          4.6         3.1          1.5         0.2  setosa	
5  5          5.0         3.6          1.4         0.2  setosa	
6  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  

640?

4.3 read.csv()  

640?

#读取.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 Species	
1  1          5.1         3.5          1.4         0.2  setosa	
2  2          4.9         3.0          1.4         0.2  setosa	
3  3          4.7         3.2          1.3         0.2  setosa	
4  4          4.6         3.1          1.5         0.2  setosa	
5  5          5.0         3.6          1.4         0.2  setosa	
6  6          5.4         3.9          1.7         0.4  setosa

喜欢你就转发一下吧

640?wx_fmt=gif

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值