📜  如何在 R 中绘制数据帧的子集?(1)

📅  最后修改于: 2023-12-03 14:52:32.467000             🧑  作者: Mango

如何在 R 中绘制数据帧的子集?

当我们需要绘制大量数据时,往往需要对数据进行筛选和提取,只选取其中一部分数据进行绘制。在 R 中,我们可以通过子集得到我们需要的数据,从而绘制我们所需的图形。

1. 子集数据

在 R 中,我们可以使用 [] 或者 $ 运算符来对数据进行子集操作。[] 运算符适用于数据框、矩阵及数组等数据类型,通过指定行、列的位置或者名称,可以得到我们需要的子集数据。$ 运算符适用于数据框,通过指定列的名称,可以得到该列对应的子集数据。

1.1 按位置子集

我们可以使用行列的位置进行子集操作,以 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
1.2 按名称子集

除了按位置进行子集操作外,我们还可以按名称来子集数据,通过 $ 运算符来选取指定列的数据。以 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
2. 绘制子集数据

在对数据子集合适后,我们可以对得到的数据进行图形绘制。在 R 中,可以使用基础绘图包及 ggplot2 包进行绘图。

2.1 使用基础绘图包绘图

基础绘图包中提供了多种绘图函数,如 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")

barplot

2.2 使用 ggplot2 包绘图

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")

scatterplot

总结

本文介绍了如何在 R 中绘制数据帧的子集,并通过例子演示了如何使用基础绘图包和 ggplot2 包进行图形绘制。需要注意的是,当我们进行子集操作时应该谨慎,避免子集丢失了我们想要的信息。