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

被折叠的 条评论
为什么被折叠?



