第3课– R中的数据类型和结构

本课程深入探讨R语言中的数据类型与结构,包括向量、矩阵、列表和数据框等核心概念。通过实例讲解如何创建、访问和操作这些数据结构,以及如何处理缺失值和执行条件访问。

欢迎来到有关R数据结构的课程。

为了执行任何有意义的数据分析,我们需要将数据收集到R数据结构中。

在本课程中,我们将探讨最常用的数据类型和数据结构。

R可用于分析许多不同形式的数据。 我们将探索R的内置数据类型。

数据分析通常需要检查大量相似数据。

在本课程中,我们将探讨可用于保存和操作数据集的各种数据结构。

R可以处理许多不同类型的数据。 在这里,我们检查常用的:数字,逻辑和字符数据类型。 数值数据通常分为整数和实数。

默认情况下,R将数字数据存储为实数,否则称为双精度浮点值。

如果我们希望将数据存储为整数值,请使用as.integer()函数。

逻辑或布尔数据是表示真实或错误条件的任何数据。 数据集中可能存在真值或假值,或者在此示例中,我们使用的是返回逻辑值的函数。

字符或字符串数​​据通常在数据集中提供。 作为常量提供的字符数据可以用单引号或双引号引起来。 如果字符数据代表一个类别,则您可能希望R将其视为一个因素而不是字符串。

我们将在以后的课程中研究因素的使用。 在这里,我们决定将字母等级视为一个因素,而不是字符串。

向量用于维护相同数据类型的值的有序集合。

任何R数据类型均可用于向量。

向量中的元素可以使用索引进行访问。 索引从值1开始。

这里有一个三个名字的字符向量的例子。 如果需要,向量也可以使用新元素进行扩展。 向量中的元素也可以被修改。

创建向量的最常见技术是使用c()或组合函数。

该函数将结合其参数以形成新的向量。

访问向量中的项目有很多方法。

在第一个示例中,我们使用单个整数作为索引方法来检索年龄向量的第一个元素。 方括号用于访问数据结构中的元素。

负整数值可用于从选择中排除元素。

可以在方括号内指定一个值范围或另一个索引向量,以从数据结构中选择特定项。

与许多不同数据结构一起使用的另一个非常有用的函数是length()函数。

如果将向量传递给length()函数,它将返回向量中元素或项的数量。

可以使用任何受支持的R数据类型创建向量。

在这里,我们决定创建一个称为年龄的向量。

代替使用数字索引,我们使用逻辑向量访问向量的元素。

我们创建具有相同数量元素的逻辑向量,并将其称为s.ages。

当我们使用逻辑向量访问年龄向量的元素时,仅返回年龄向量中具有逻辑向量中相应TRUE值的值。

我们得到的向量“ m”仅包含值10和42。

我们很快就会发现,用于分析数据结构的条件访问方法是R的一项非常强大的功能。

让我们看看如何根据条件动态访问向量的元素。

我们有一个简单的数字向量,称为nums。 我们想从向量中提取偶数并将其存储在新向量中。

R可以使用条件访问来处理此任务。

为此,我们将使用模和相等运算符来帮助确定元素是偶数还是奇数。

R将条件表达式应用于向量的每个元素,因为向量在方括号内被引用。

如果表达式的计算结果为true,则该元素的副本将附加到称为evens的新向量上。

最后,我们检查新向量的内容,以验证是否已复制正确的值。

R提供了几种不同的技术来生成值序列。

在这里,我们使用seq()或sequence函数。 函数str()用于显示对象的结构。 在这种情况下,我们注意到初始结构是数字的向量。

我们使用称为as.integer()的类型转换函数将默认的double值更改为整数。 R中提供了各种其他类型转换功能。

生成简单序列的另一种方法是使用冒号运算符(:)。

在这里,我们生成一个从0到9的整数的向量。

R是一种功能性语言,内置了对矢量操作的支持。 只要有可能,最好利用向量运算来代替迭代或循环。

R将对许多向量操作使用非常有效的本机库,因此您的

与使用循环执行每个操作相比,R脚本的执行速度要快得多。

例如,让我们按小时计薪。

我们希望将所有小时薪提高10%。

为了完成此任务,我们将现有薪水乘以1.10以获得新薪水。

可以使用乘法运算符或星号(*)。

在R中,常数1.10与向量的每个元素相乘。

这是R的向量回收规则的一个示例。

请注意,由于我们没有存储新工资,因此原始值保持不变。

要替换现有值,我们必须使用赋值运算符。

正如我们在前面的示例中看到的那样,当使用不同大小的向量执行R向量操作时,较小的向量将在操作完成后被回收或重新使用。

在此示例中,我们正在执行向量加法,但是temps具有4个元素,并且将其与2个元素向量n.temps相加。

在执行该操作之后,我们注意到对向量temp的最后2个元素第二次应用了元素3和4。

这可能不是您预期的结果,因此在将这些内置函数与向量一起使用时要小心。

当使用大型数据集时,通常会缺少一些数据值。

R具有一个特殊值,用于表示丢失的数据。

丢失的数据可以用NA的值表示。 NA只是表示“不可用”。 默认情况下,R将识别NA值,并且在此示例中,当缺少值时,不能计算mean()。

如果您想忽略丢失的数据,则可以传递可选参数na.rm = TRUE。

R中还有其他特殊值,但是在本课中我们将不讨论它们。

矩阵只是具有2维的向量。 我们仍然有一个限制,即所有元素都必须具有相同的数据类型。

在此示例中,我们使用matrix()函数创建一个矩阵,以表示2个不同学生的分数。 创建矩阵时应提供矩阵的尺寸。

在这里,我们要创建一个2 x 3的矩阵,因为我们有2个学生和3个不同的属性。

第一列用作唯一的学生标识符,每行中的2个元素代表2个不同测试的结果。

当我们使用matrix()函数时,数据是作为一维向量提供的,但是随后我们还描述了R应该用来表示数据的行数和列数。

默认情况下,向量中的数据按列填充数据结构。

在我们的示例中,学生1的测试得分为80和67,学生2的测试得分为85和56。

可以使用逗号运算符将矩阵内的数据分析为单个元素或一系列元素。

在这里,我们正在计算所有学生的第一次考试的平均值。

重要的是要记住,使用的第一个索引值代表矩阵中的行,第二个值代表列索引。

前面我们曾提到,存储在R矩阵中的数据必须具有相同的数据类型,但是可以为行和列指定名称,而不是简单地使用数字索引值。

在此示例中,我们想澄清一下,这些列确实代表了学生ID,test1和test2元素。

我们使用colnames()函数完成此操作。 此函数接受一个向量,该向量具有与矩阵中的每一列关联的术语。

现在,我们可以使用“ test1”的列名引用跨分数矩阵执行相同的计算。 使用列名提供了更多的灵活性,因为您不再需要担心索引值会随着时间变化。

列表是对象的有序集合。 与向量不同,对象可以是混合数据类型,也可以是不同长度。

在此示例中,我们从2个独立向量开始。 学生姓名的字符向量和年龄的数字向量。

使用list()函数创建一个称为教室的列表结构。 该列表由学生和年龄向量的副本组成。

一组方括号[]用于检索列表中包含的数据的副本。

数据总是以列表数据结构的形式返回。

可以使用一组单方括号或双方括号来检索学生姓名。

如果要修改存储在教室列表中的值,可以使用双括号索引方法

在这里,我们将教室列表结构中的第一个学生“ Mary”替换为新学生“ Eva”。

用于创建初始教室数据结构的称为“学生”的初始向量保持不变。

就像我们能够使用矩阵数据结构为列命名一样,我们可以命名列表中的每个组件。

在这里,我们决定使用术语“学生”和“年龄”来标记或命名教室的列表部分。

现在,我们可以使用美元符号($)或列表组件的名称来引用列表元素。

由于列表使我们能够对不同类型的数据进行分组,因此它们经常在数据分析任务中使用。

数据框是表示表格数据的有用数据结构。

像列表一样,数据框可以包含不同类型的数据。

与列表不同,数据帧具有定义的大小-或行和列的数量。

在这里,我们使用data.frame()函数创建了一个名为df1的数据帧。

数据框代表我们的三个学生及其在一次测试中的成绩。

cbind()或列绑定函数可用于将另一个向量作为新列附加到我们的data.frame中。

在这种情况下,新向量代表3个学生的年龄集合。

如果要将新行附加到数据框,则可以使用rbind()或行绑定函数。

在此示例中,我们将新学生添加到我们的数据框中。

翻译自: https://bytes.com/topic/apis/insights/958467-lesson-3-data-types-structures-r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值