R-创建数据集

一、数据结构

R有5种基本的数据结构,分别是向量、矩阵、数组、数据框和列表。其中,向量、矩阵和数组中的数据类型必须是相同的,而数据框和列表中的数据类型可以是不一样的。

1.1 向量

1.1.1 生成向量

向量是用于存储数值型、字符型或逻辑型数据的一维数组。用执行组合功能的函数c()来创建向量。

m<-c(1,2,5,3,6,-2,4)
n<-c("数","据","结","构")
l<-c(TRUE,FALSE,TRUE,TRUE,FALSE)

m为数值型向量,n为字符型向量,l为逻辑型向量。 

1.1.2 向量中元素的选择

通过在方括号中给定元素所处位置的数值,可以访问向量中的元素。R的位置索引从1开始。

a<-c("k","j","h","a","c","m")
a[3]#a[c(3)]也可
a[c(1,3,5)]#a[1,3,5]报错
a[2:6]#a[c(2:6)]也可 冒号是用于生成一个数值序列

1.2 矩阵

1.2.1 生成矩阵

矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。通过函数matrix()创建矩阵。

myymatrix<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,byrow=FALSE,dimnames=list(char_vector_rownames,char_vector_colnames))

其中

vector包含了矩阵的元素;

nrowncol用来设定矩阵的行数和列数;(一般只需要设定一个,另一个值可以根据元素的个数自动给出)

dimnames设定以字符向量表示的行名和列名;

byrow设定当前矩阵按行(byrow=TRUE)填充还是按列(byrow=FALSE)填充。默认按列填充。

示例:

cnames<-c("喜鹊","蝙蝠","斑嘴鸭","金翅雀","红脚隼")
rnames<-c("数量","密度","丰度","显著度")
y<-matrix(1:20,nrow=4,ncol=5,byrow=FALSE,dimnames=list(rnames,cnames))

输出结果y为 :

1.2.2 矩阵中元素的选择 

使用下标和方括号来选择矩阵中的行、列或元素。

y[1,]#访问矩阵y中的第1行
y[,2]#访问矩阵y中的第2列
y[1,2]#访问矩阵y中第一行第二列的元素
y[1,c(2:4)]#访问矩阵y中第一行第二列到第四列的元素

1.3 数组 

1.3.1 生成数组

数组与矩阵类似,但是维度可以大于2。可使用array函数创建数组。

myarray<-(vector,dimensions,dimnames)

其中

vector包含了数组中的数据

dimensions是一个数值型向量,给出了各维度下标的最大值

dimnames是可选择是否写入的、各维度的名称标签的列表。

以下代码为创建一个三维(3x4x5)的数值型数组的示例:

dim1<-c("A1","A2","A3")
dim2<-c("B1","B2","B3","B4")
dim3<-c("C1","C2","C3","C4","C5")
a<-array(1:60,c(3,4,5),dimnames=list(dim1,dim2,dim3))

若想将结果直观的在控制台(Console)窗口显示结果,可使用print()函数。

上述代码输出结果为:

1.3.2 数组中元素的选择

同矩阵一样,如a[1,2,3]输出结果为28。

1.4 数据框

1.4.1 生成数据框

数据框的概念相较于矩阵来说更为一般,其不同的列可以包含不同模式(数值型、字符型等)的数据(但每一列数据的模式必须唯一,如数值型、字符型等)。可以使用函数data.frame()来创建。

示例如下:

patientID<-c(1,2,3,4)
age<-c(25,34,28,52)
diabetes<-c("Type1","Type2","Type3","Type4")
status<-c("Poor","Improved","Excellent","Poor")
patientdata<-data.frame(patientID,age,diabetes,status)

输出结果为:

1.4.2 数据框中元素的选择 

可以使用前述的(如矩阵中的下标记号),也可以直接指定列名。示例如下

也可以使用符号$,它被用来选取一个给定数据框中的某个特定变量。

例如,如果想要生成糖尿病类型变量diabetes和病情变量status的列联表,可以使用如下代码:

 

 在每个变量明前都输入一次patientdata$会比较麻烦,可以走一些捷径。例如,可以使用函数with()来简化代码。

1.使用with()函数

以内置的数据框mtcars为例。

summary(mtcars$mpg)
plot(mtcars$mpg,mtcars$disp)
plot(mtcars$mpg,mtcars$wt)

上面的代码可以简写如下: 

with(mtcars,{summary(mpg)
  plot(mpg,disp)
  plot(mpg,wt)})

花括号{}之间的语句都针对数据框mtcars执行。如果仅有一条语句,花括号可省略。例如:

with(mtcars,summary(mpg))

函数with()的局限性在于,赋值谨在此函数的括号内生效。如果需要创建在with结构以外存在的对象,需要使用特殊赋值符(<<-)替代标准赋值符(<-),它可以将对象保存在with()之外的全局环境中。

如下:

with(mtcars,{stats<-summary(mpg)
stats2<<-summary(mpg)})
stats
stats2

输出结果为:

1.5 因子

名义变量:没有顺序之分的分类变量。如上述Diabetes列(Type1、Type2)是名义变量的一例,即使Type1编码为1,Type2编码为2也不代表着二者是有序的。

顺序变量:表示一种顺序关系而非数量关系,如上述中的status列。

连续变量:可以呈现为某个范围内的任意值,并同时表示了顺序和数量。如上述中的age列。

分类变量(名义变量)和有序的分类变量(顺序变量)在R中成为因子。 

函数factor()以一个整数向量的形式存储类别值,整数的取值范围为[1...k],k是名义变量中唯一值的个数。同时,一个由字符串(原始值)组成的内部向量将映射到这些整数上。

例如:

status<-c("poor","improved","excellent","poor")
status<-factor(status,order=TRUE,levels=c("poor","improved","excellent"))
  • status 是一个向量,包含了分类数据。
  • factor() 函数将这个向量转换成一个因子。
  • order = TRUE 表示这个因子是有顺序的。这意味着因子的级别(levels)是按照特定的顺序排列的,并且这个顺序在分析中是重要的。例如,在逻辑回归或线性模型中,如果因子是有序的,模型会考虑级别之间的顺序关系。
  • levels = c("poor", "improved", "excellent") 定义了因子的级别,并指定了它们的顺序。在这个例子中,"poor" 是最低级别,"excellent" 是最高级别。

如果没有设置 order = TRUE,即使指定了 levels,R也会将因子视为无序的,这意味着不同级别之间没有内在的顺序关系。在这种情况下,"poor"、"improved" 和 "excellent" 只是不同的类别,没有特定的顺序。

需要保证指定的水平的赋值与数据中的真实值相匹配,因为任何在数据中出现而未在参数中列举的数据都会被标记为缺失值。

数值型变量可以用参数levels和labels来编码成因子。如果男性被编码成1,女性被编码成2,则有一下语句:

sex<-factor(sex,levels=c(1,2),labels=c("Male","Female"))

需要注意,标签的顺序必须和水平的顺序一致。

1.6 列表

1.6.1 生成列表

列表是R数据类型中最为复杂的一种。一般来说,列表就是一些对象的有序集合。我们可以使用列表将若干(可能无关的)对象整合到单个对象名下。一个列表中可包含若干向量、矩阵、数据框,甚至其他列表。

可以使用函数list()来创建列表:

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

我们还可以为列表中的对象命名:

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

1.6.2 列表中元素的选择

可以通过在双重方括号中指明代表某个成分的数字或名称来访问列表中的元素。

1.7 tibble数据框

使用install.packages("tlbble")来安装tibble包。然后使用tibble包里的函数tibble()或as_tibble()来创建tibble数据框。

二、数据的输入

R提供了适用范围非常广泛的数据导入工具。R可以从键盘、文本文件、Excle和Access、流行的统计软件等各来源处导入数据。其操作基本都是载入相关的R包后使用R包中的相关函数进行数据导入。以下介绍从Excel输入数据。

2.1 从Excel导入数据

可以用readxl包直接导入Excel工作表。

#安装R包
install.packages("readxl")
#载入R包
library(readxl)
#设置读取读取Excel文件中每一行的数据类型
col_types<-c("text","numeric","numeric")
#对已存储在本地的Excel文件进行读取并保存在m中
m<-read_xlsx("C:\\Users\\11328\\Desktop\\新建 Microsoft Excel 工作表.xlsx",sheet="Sheet1",col_types=col_types)

上述代码中 ,

"C:\\Users\\11328\\Desktop\\新建 Microsoft Excel 工作表.xlsx"指定读取的目标Excel文件;

sheet="Sheet1"指定读取目标Excel文件的哪一个Sheet;

col_types=()设置读取内容中每一列的数据类型。(如果Excel中的数值是以文本格式存储的,读取时可能会转换成数值类型,这可能导致小数点后的位数变化。)

下图为需要读取的Excel文件。

下图为使用上述函数读取文件后的结果。 

### 回答1: LRW-1000是一个非常有用的数据集,它是专门为语音识别和口语动作识别算法的训练和测试而创建的。该数据集由1000个英语单词的视频和音频组成,这些单词都是常见的日常生活单词,比如“apple”、“house”、“goodbye”等等。 如果你要下载LRW-1000数据集,可以到官网上寻找下载链接。这个数据集是开放的,所以你不需要支付任何费用就可以下载。一旦你下载了这个数据集,你就可以用它来训练和测试你的语音识别和口语动作识别算法。 当你开始使用LRW-1000数据集时,你需要注意一些细节。首先,你需要将数据集转换成你所使用的语音识别或口语动作识别算法所需的格式。其次,你需要注意数据集中可能存在的噪声和其他干扰因素,这些因素可能会影响你的算法的准确性。最后,你需要用适当的算法来训练和测试你的数据集,以便得出准确的结果。 总之,LRW-1000数据集是一个非常有用的资源,可以帮助你提高语音识别和口语动作识别算法的准确性。无论你是要进行学术研究还是开发商业应用,该数据集都有很高的实用性。 ### 回答2: LRW-1000数据集是由欧洲语音识别挑战赛提供的数据集,用于进行口型和语音识别的研究。该数据集包含了来自1000名英语母语者的视频和音频数据,以及他们通过口型表达的单词。这些单词涵盖了英语的常见词汇,如数字、人名、食品和动物等。 如果你想要下载此数据集,可以前往语音识别挑战赛的官方网站进行下载。下载需要注册账号并填写申请表格。数据集大小为10GB左右,下载时需要耐心等待。使用此数据集进行研究需要遵守其使用协议,并在相关出版物中引用数据集来源。 该数据集可以用于训练和测试口型和语音识别系统,并用于探索自然语言处理和机器学习领域的新方法。由于其覆盖面广,且来自母语者不同的声音和口型表达,因此被广泛认为是语音识别研究中的重要资源之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值