5  数据框(data.frame)

数据框是 R 语言中一种常用的数据结构,它是一个二维数据表,用于存储一组不同类型的数据,每列数据都有一个对应的列名。类似EXCEL中的Sheet表格。

一些常见的数据框操作包括:

5.1 代码示例

# 创建一个数据框
my_data_frame <- data.frame(
  id = c(1, 2, 3),
  name = c("Alice", "Bob", "Charlie"),
  age = c(20, 25, 30),
  gender = c("F", "M", "M")
)

# 查看数据框的前几行
head(my_data_frame)
# 查看数据框的后几行
tail(my_data_frame)
# 查看数据框的数据类型和结构
str(my_data_frame)
'data.frame':   3 obs. of  4 variables:
 $ id    : num  1 2 3
 $ name  : chr  "Alice" "Bob" "Charlie"
 $ age   : num  20 25 30
 $ gender: chr  "F" "M" "M"
# 选择数据框中的某一列
my_data_frame$name
[1] "Alice"   "Bob"     "Charlie"
# 选择数据框中的某一行
my_data_frame[2, ]
# 选择数据框中的某一个值
my_data_frame[2, "name"]
[1] "Bob"
# 添加数据框列
my_data_frame$score <- c(90, 85, 80)

# 添加数据框行
new_row <- data.frame(id = 4, name = "David", age = 32, gender = "M", score = 75)
rbind(my_data_frame, new_row)
# 删除数据框列
my_data_frame$score <- NULL
my_data_frame
# 删除数据框行
my_data_frame <- my_data_frame[-2, ]
my_data_frame
# 排序数据框
my_data_frame <- my_data_frame[order(my_data_frame$age), ]
my_data_frame
# 过滤数据框
my_data_frame[my_data_frame$age >= 25, ]

5.2 行索引和列索引

在 R 语言中,数据框是一种二维数据表,其中每行表示一个观察值,每列表示一个变量。数据框的行索引和列索引是用来确定某一个特定的数据值的位置的方法。

  • 行索引: 数据框的行索引是从 1 开始的正整数,用来标识每一行。例如,在上面的代码中,第一行的行索引是 1,第二行的行索引是 2,以此类推。
  • 列索引: 数据框的列索引是列名,用来标识每一列。例如,在上面的代码中,第一列的列索引是 id,第二列的列索引是 name,以此类推。

我们可以使用行索引和列索引来选择数据框中的某一个值。例如,如果我们想选择第二行第三列的值,可以使用 my_data_frame[2, "age"] 这样的语法。

5.3 行索引和列索引的常见用法

行索引和列索引在 R 语言中都非常常见,它们有许多用途。下面是一些常见的行索引和列索引的用法:

  • 选择数据框中的某一个值: 可以使用行索引和列索引选择数据框中的某一个值。例如,my_data_frame[2, "name"] 表示选择第二行第 name 列的值。
  • 添加数据框行: 可以使用行索引和 rbind() 函数添加新的行到数据框中。例如,my_data_frame <- rbind(my_data_frame, new_row) 表示将新的行 new_row 添加到数据框 my_data_frame 的末尾。
  • 删除数据框行: 可以使用行索引删除数据框中的某一行。例如,my_data_frame <- my_data_frame[-2, ] 表示删除数据框 my_data_frame 中的第二行。
  • 排序数据框: 可以使用行索引和 order() 函数对数据框进行排序。例如,my_data_frame <- my_data_frame[order(my_data_frame$age), ] 表示根据 age 列对数据框 `

5.4 []在R语言中的含义

在 R 语言中,[] 符号用来表示数据结构的索引。具体来说,它表示选择数据结构中的某一部分。例如,如果 my_data 是一个数据框,那么 my_data[2, "name"] 表示选择数据框 my_data 中的第二行第 name 列的值。

在 R 语言中,[] 符号还可以用来进行其他操作,例如排序、过滤、删除等。它还可以用来创建新的数据结构,例如向量、数组、数据框等。有关具体用法,您可以参考 R 语言的相关文档和教程。

5.5 []中缺省行索引和列索引的意义

在 R 语言中,当 [] 符号中的行索引或列索引缺省时,它们会被自动填充为默认值。

对于行索引,如果缺省,默认值是 1:n,其中 n 是数据框中的行数。例如,如果 my_data 是一个数据框,那么 my_data[, "name"]my_data[1:n, "name"] 是等价的,都表示选择数据框 my_data 中的所有行的 name 列。

对于列索引,如果缺省,默认值是所有列的名称。例如,如果 my_data 是一个数据框,那么 my_data[2, ]my_data[2, colnames(my_data)] 是等价的,都表示选择数据框 my_data 中的第二行的所有列。

通过使用缺省行索引和列索引,可以使代码更简洁易读。例如,我们可以使用 my_data[, "name"] 表示选择数据框 my_data 中的所有行的 name 列,而不用写出每一行的行索引。这样做既能够保证代码的正确性,又能够提高代码的可读性。

当然,在实际使用中,还需要注意一些特殊情况。例如,如果缺省行索引和列索引可能导致代码不易理解,或者会与其他语法产生冲突,那么就需要明确指定行索引和列索引了。总之,在使用 [] 符号时,应该根据实际情况谨慎选择是否使用缺省行索引和列索引。

5.6 行索引和列索引也可以填写布尔值吗?

是的,在 R 语言中,行索引和列索引也可以填写布尔值。这种用法可以用来选择数据框中满足某一条件的行和列。

例如,如果 my_data 是一个数据框,那么 my_data[my_data$age > 30, ] 表示选择数据框 my_dataage 列大于 30 的所有行。如果我们还想选择其中的 nameage 列,可以使用如下语句:

my_data <- data.frame(
  id = c(1, 2, 3),
  name = c("Alice", "Bob", "Charlie"),
  age = c(20, 25, 30),
  gender = c("F", "M", "M")
)
my_data[my_data$age > 25, c("name", "age")]

这样,我们就可以快速选择数据框中满足某一条件的行和列了。这种方法非常方便,并且能够有效地过滤数据,为进一步的分析提供更为精细的数据。

需要注意的是,在使用行索引和列索引时,需要确保它们的长度与数据框的行数和列数相同。如果长度不匹配,那么可能会导致代码出错或不能正常运行。因此,在使用行索引和列索引时,应该认真检查代码是否正确。