跳到主要内容

R读写CSV文件

提示
  1. 读取 CSV 文件:在 R 中,可以使用 read.csv() 函数来读取 CSV 文件,这将创建一个数据框(data frame),其中包含 CSV 文件的内容。
  2. 处理 CSV 数据:R 提供了函数如 min()max()ncol()nrow()subset(),用于处理 CSV 文件中的数据,例如计算列的最小值和最大值、获取行列数或提取满足特定条件的数据子集。
  3. 写入 CSV 文件:可以使用 write.csv() 函数将数据框(data frame)导出为 CSV 文件,还可以通过参数调整如是否包含引号等格式化选项。

CSV(逗号分隔值)文件是一种纯文本文件,使用逗号来分隔值。

R 具有内置功能,使得读取和写入 CSV 文件变得简单。

示例 CSV 文件

为了演示如何在 R 中读取 CSV 文件,假设我们有一个名为 airtravel.csv 的 CSV 文件,包含以下数据:

月份,  1958,   1959,   1960
一月, 340, 360, 417
二月, 318, 342, 391
三月, 362, 406, 419
四月, 348, 396, 461
五月, 363, 420, 472
六月, 435, 472, 535
七月, 491, 548, 622
八月, 505, 559, 606
九月, 404, 463, 508
十月, 359, 407, 461
十一月, 310, 362, 390
十二月, 337, 405, 432

上面的 CSV 文件是 1958-1960 年每月航空旅客数量的样本数据,单位为千。

现在,让我们尝试使用 R 的内置函数从这个 CSV 文件中读取数据。

在 R 中读取 CSV 文件

在 R 中,我们使用 read.csv() 函数来读取当前目录中的 CSV 文件。例如,

# 从当前目录读取 airtravel.csv 文件
read_data <- read.csv("airtravel.csv")

# 显示 csv 文件
print(read_data)

输出

      月份,  1958,  1959,  1960
1 一月 340 360 417
2 二月 318 342 391
3 三月 362 406 419
4 四月 348 396 461
5 五月 363 420 472
6 六月 435 472 535
7 七月 491 548 622
8 八月 505 559 606
9 九月 404 463 508
10 十月 359 407 461
11 十一月 310 362 390
12 十二月 337 405 432

在上面的示例中,我们读取了当前目录中的 airtravel.csv 文件。注意代码,

read_data <- read.csv("airtravel.csv")

这里,read.csv() 读取了 csv 文件 airtravel.csv 并创建了一个数据框,存储在 read_data 变量中。

最后,使用 print() 显示 csv 文件。

注意:如果文件位于其他位置,我们必须指定路径和文件名,如:read.csv("D:/folder1/airtravel.csv")

R 中 CSV 文件的行数和列数

我们使用 ncol()nrow() 函数来获取 R 中 CSV 文件中存在的总行数和列数。例如,

# 从目录中读取 airtravel.csv 文件
read_data <- read.csv("airtravel.csv")

# 打印总列数
cat("总列数: ", ncol(read_data))

# 打印总行数
cat("总行数:", nrow(read_data))

输出

总列数: 4
总行数: 12

在上面的示例中,我们使用了 ncol() 和 nrow() 函数来找出 airtravel.csv 文件中的总列数和行数。

这里,

  • ncol(read_data) - 返回总列数,即 4
  • nrow(read_data) - 返回总行数,即 12

在 R 中使用 min() 和 max() 函数处理 CSV 文件

在 R 中,我们还可以使用 min()max() 函数找出 CSV 文件中某一列的最小值和最大值。例如,

# 从目录中读取 airtravel.csv 文件
read_data <- read.csv("airtravel.csv")

# 返回 airtravel.csv 文件中 1960 列的最小值
min_data <- min(read_data$1960) # 390

# 返回 airtravel.csv 文件中 1958 列的最大值
max_data <- max(read_data$1958) # 505

输出

[1] 390
[1] 505

这里,我们使用了 min()max() 函数分别找出 airtravel.csv 文件中 19601958 列的最小值和最大值。

  • min(read_data$1960) - 返回 1960 列的最小值,即 390
  • max(read_data$1958) - 返回 1958 列的最大值,即 505

R 中 CSV 文件的子集

在 R 中,我们使用 subset() 函数返回 CSV 文件中满足特定条件的所有数据。例如,

# 从目录中读取 airtravel.csv 文件
read_data <- read.csv("airtravel.csv")

# 返回 csv 的子集,其中 1958 年的航空旅客数量应大于 400
sub_data <- subset(read_data, 1958 > 400)

print(sub_data)

输出

      月份,  1958,  1959,  1960
6 六月 435 472 535
7 七月 491 548 622
8 八月 505 559 606
9 九月 404 463 508

在上述例子中,我们在 subset() 函数中指定了一个特定条件,以从 CSV 文件中提取数据。

subset(read_data, 1958 > 400)

这里,subset() 创建了一个 airtravel.csv 的子集,数据列 1958 的数据大于 400,并将其存储在 sub_data 数据框中。

由于列 1958第6第7第8第9 行的数据大于 400,因此只显示这些行。

在 R 中写入 CSV 文件

在 R 中,我们使用 write.csv() 函数来写入 CSV 文件。我们以 数据框 的形式传递数据。例如,

# 创建一个数据框
dataframe1 <- data.frame (
Name = c("Juan", "Alcaraz", "Simantha"),
Age = c(22, 15, 19),
Vote = c(TRUE, FALSE, TRUE))

# 将 dataframe1 写入 file1.csv 文件
write.csv(dataframe1, "file1.csv")

在上述例子中,我们使用 write.csv() 函数将名为 dataframe1 的数据框导出到一个 CSV 文件。注意传递给 write.csv() 的参数,

write.csv(dataframe1, "file1.csv")

这里,

  • dataframe1 - 我们想要导出的数据框的名称
  • file1.csv - csv 文件的名称

最后,file1.csv 文件在我们的目录中看起来像这样:

CSV 文件

如果我们将 "quote = FALSE" 传递给 write.csv(),如下:

write.csv(dataframe1, "file1.csv",
quote = FALSE
)

我们的 file1.csv 将看起来像这样:

CSV 文件

所有被双引号 " " 包围的值都被移除了。