📅  最后修改于: 2023-12-03 14:52:32.467000             🧑  作者: Mango
当我们需要绘制大量数据时,往往需要对数据进行筛选和提取,只选取其中一部分数据进行绘制。在 R 中,我们可以通过子集得到我们需要的数据,从而绘制我们所需的图形。
在 R 中,我们可以使用 []
或者 $
运算符来对数据进行子集操作。[]
运算符适用于数据框、矩阵及数组等数据类型,通过指定行、列的位置或者名称,可以得到我们需要的子集数据。$
运算符适用于数据框,通过指定列的名称,可以得到该列对应的子集数据。
我们可以使用行列的位置进行子集操作,以 iris 数据为例:
data(iris)
head(iris)
输出结果:
> head(iris)
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
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
我们可以使用行列位置或者名称来子集数据,通过下标或逗号分隔行列,如:
# 选取第1行2列的数据
> iris[1, 2]
[1] 3.5
# 选取前5行的第1列和第5列
> iris[1:5, c(1,5)]
Sepal.Length Species
1 5.1 setosa
2 4.9 setosa
3 4.7 setosa
4 4.6 setosa
5 5.0 setosa
除了按位置进行子集操作外,我们还可以按名称来子集数据,通过 $
运算符来选取指定列的数据。以 mtcars
数据集为例:
data(mtcars)
head(mtcars)
输出结果为:
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
通过 $
运算符来选取指定列的数据:
# 选取 mpg 和 cyl 列数据
> mtcars$mpg
[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 14.7 32.4 30.4
[20] 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
# 选取 mpg 和 cyl 列数据
> mtcars[, c("mpg", "cyl")]
mpg cyl
Mazda RX4 21.0 6
Mazda RX4 Wag 21.0 6
Datsun 710 22.8 4
Hornet 4 Drive 21.4 6
Hornet Sportabout 18.7 8
Valiant 18.1 6
在对数据子集合适后,我们可以对得到的数据进行图形绘制。在 R 中,可以使用基础绘图包及 ggplot2 包进行绘图。
基础绘图包中提供了多种绘图函数,如 plot()
、barplot()
、hist()
、boxplot()
等对于数据不同类型的绘图方式。以 mtcars
数据集为例,绘制 mpg 和 cyl 列数据条形图。
# 选取 mpg 和 cyl 列数据, 并绘制条形图
data(mtcars)
bar_data <- mtcars[, c("mpg", "cyl")]
barplot(t(bar_data), beside = TRUE, main = "mpg vs. cyl")
ggplot2 包是目前使用最多的数据可视化包,它提供了丰富的绘图语法以及强大的扩展性。以 iris
数据为例,绘制 sepal.length 和 sepal.width 列的散点图。
library(ggplot2)
data(iris)
# 选取 sepal.length 和 sepal.width 列,并绘制散点图
scatter_data <- iris[, c("Sepal.Length", "Sepal.Width")]
ggplot(scatter_data, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point() +
ggtitle("Scatterplot of Sepal.Length vs Sepal.Width")
本文介绍了如何在 R 中绘制数据帧的子集,并通过例子演示了如何使用基础绘图包和 ggplot2 包进行图形绘制。需要注意的是,当我们进行子集操作时应该谨慎,避免子集丢失了我们想要的信息。