R 读取和写入 CSV 文件

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

R 具有内置功能,可以轻松读写 CSV 文件。


CSV 文件示例

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

Month,  1958,   1959,   1960
JAN,    340,    360,    417
FEB,    318,    342,    391
MAR,    362,    406,    419
APR,    348,    396,    461
MAY,    363,    420,    472
JUN,    435,    472,    535
JUL,    491,    548,    622
AUG,    505,    559,    606
SEP,    404,    463,    508
OCT,    359,    407,    461
NOV,    310,    362,    390
DEC,    337,    405,    432

上面的 CSV 文件是 1958-1960 年每月航空旅行(以千人次计)的样本数据。

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


在 R 中读取 CSV 文件

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

# read airtravel.csv file from our current directory
read_data <- read.csv("airtravel.csv")

# display csv file
print(read_data)

输出

      Month,  1958,  1959,  1960
1    JAN       340    360    417
2    FEB       318    342    391
3    MAR       362    406    419
4    APR       348    396    461
5    MAY       363    420    472
6    JUN       435    472    535
7    JUL       491    548    622
8    AUG       505    559    606
9    SEP       404    463    508
10   OCT       359    407    461
11   NOV       310    362    390
12   DEC       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 文件中的总行数和列数。例如,

# read airtravel.csv file from our directory
read_data <- read.csv("airtravel.csv")

# print total number of columns
cat("Total Columns: ", ncol(read_data))

# print total number of rows
cat("Total Rows:", nrow(read_data))

输出

Total Columns: 4
Total Rows: 12 

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

这里,

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

将 min() 和 max() 与 CSV 文件一起使用

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

# read airtravel.csv file from our directory
read_data <- read.csv("airtravel.csv")

# return minimum value of 1960 column of airtravel.csv
 min_data <- min(read_data$1960)  # 390

# return maximum value of 1958 column of airtravel.csv
 min_data <- max(read_data$1958)  # 505

输出

[1] 390
[1] 505

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

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

R 中 CSV 文件的子集

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

# read airtravel.csv file from our directory
read_data <- read.csv("airtravel.csv")

# return subset of csv where number of air 
# traveler in 1958 should be greater than 400
sub_data <- subset(read_data, 1958 > 400) 

print(sub_data)

输出

      Month,  1958,  1959,  1960
6    JUN       435    472      535
7    JUL       491    548      622
8    AUG     505    559      606
9    SEP       404    463      508

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

subset(read_data, 1958 > 400)

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

由于列 1958 在第 6789 行的数据大于 400,因此只显示这些行。


在 R 中写入 CSV 文件

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

# Create a data frame
dataframe1 <- data.frame (
  Name = c("Juan", "Alcaraz", "Simantha"),
  Age = c(22, 15, 19),
  Vote = c(TRUE, FALSE, TRUE))

# write dataframe1 into file1 csv file
write.csv(dataframe1, "file1.csv")

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

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

这里,

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

最后,file1.csv 文件在我们的目录中将如下所示

CSV File
CSV 文件系统输出

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

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

我们的 file1.csv 将如下所示

 

CSV File
CSV 文件系统输出

 

所有被双引号 " " 包裹的值都已删除。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战