无论你是在比较不同的人口统计学对营销活动的反应, 放大特定时间范围还是从库存中提取有关选定的几种产品的信息, 子集数据集都可以使你在数据集中提取有用的观察结果。 R是使子集数据容易和直观的好工具。在本教程结束时, 你将掌握从数据集中提取所需信息的专业知识。
对数据进行子集设置不会更改数据的内容, 而只是选择与你要实现的目标最相关的部分。通常, 有三种方式可以对数据集的行和列进行子集化-按索引, 按名称和按值。
按索引子集行和列
子集行和列的一种方法是通过数据集的索引。这与将行和列描述为”第一行”, “第二列和第五列中的所有行”或”第二列至第五列中的第一行”相同。让我们使用R中称为”虹膜”的数据集来指定此类短语。从其文档中, ” [他的(费舍尔或安德森氏)著名的虹膜数据集分别以厘米为单位, 分别测量了萼片的长度和宽度以及花瓣的长度和宽度, 三种鸢尾花各有50朵花, 分别是鸢尾, 杂色和初春。
要对数据进行子集化, 请在数据集对象之后使用方括号。数据集的行被指定为方括号内的第一个元素, 数据集的列被指定为第二个元素, 并用逗号分隔:
data[rows, columns]
按名称子集行和列
在R中, 数据集的行和列具有名称属性。行名很少使用, 默认情况下提供索引(整数从1到数据集的行数), 就像上一节中看到的那样。实际上, 如果你在虹膜数据集上调用rownames(), 你将看到它们只是从1索引到150:
> rownames(iris)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14"
[15] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28"
[29] "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42"
[43] "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56"
[57] "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70"
[71] "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84"
[85] "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98"
[99] "99" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112"
[113] "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126"
[127] "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140"
[141] "141" "142" "143" "144" "145" "146" "147" "148" "149" "150"
> nrow(iris)
[1] 150
行名称在较小的数据集中更常见, 用于使数据集中的观测值易于识别。例如, 对于包含医生患者健康信息的小型数据集, 此数据集的行名称可以是患者的全名。
另一方面, 几乎所有数据集都普遍使用列名。你可以使用colnames()函数或names()函数访问它们:
colnames(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
要通过行和列的名称对数据集进行子集化, 只需再次使用方括号(以数据集对象为前缀)即可:
重要的是要注意, 行名和列名都是字符, 因此绝对需要使用单引号或双引号!
按值细分行和列
按值对行和列进行子集设置通常可以提供最大的灵活性。例如, 你可以使用如下条件语句来提取鸢尾花的数据:
> iris[iris$Species == "setosa", ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
...
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
条件语句(例如iris $ Species ==” setosa”)位于方括号中的row元素(即, 逗号前面的第一个元素)。除了第一个元素中的条件语句之外, 你还可以在第二个元素中按索引或名称指定列。在下面的控制台中, 尝试仅选择鸢尾花的萼片尺寸:
概括
在本教程中, 你:
- 了解有关按索引对数据帧进行子集设置的信息。行和列的索引分别为1到行和列数的整数。
- 了解有关按名称设置数据框的信息。你了解到很少指定行名, 并且列名是字符类型。
- 了解如何在方括号内的row元素中使用条件语句来按值对数据框架进行子集化。
- 了解如何结合使用这些方法以实现更灵活的子设置(例如, 对行使用条件, 对索引使用子集或对列进行子集设置)。
以下是一些练习, 可以帮助你增强所学内容。实践使完美, 因此请尝试一下!
练习练习
选择其萼片宽度大于花瓣长度的所有观测值。
选择所有杂种中萼片宽度大于平均萼片宽度的杂色鸢尾。
报告所有花瓣长度小于5厘米的鸢尾鸢尾的平均萼片宽度。
想更多地了解从数据中提取见解的其他方法吗?在srcmini上查看这些课程!
评论前必须登录!
注册