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)
- 返回总列数,即 4nrow(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
列中的最小值,即 390max(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
在第 6、7、8 和 9 行的数据大于 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
文件在我们的目录中将如下所示

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

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