【发布时间】:2019-07-17 18:24:53
【问题描述】:
我有一个关于文件的问题。
我问的原因是因为使用了某些功能,例如在 R 中将数据从外部导入到 R。
我有一个文件character_student.txt,其中包含如下数据。
Name, Age, Gender, Test1
john, 11, M, 90
betty, 25, F, 33
我很困惑。上述文件是否被视为 csv 文件(逗号分隔文件)?或者它是一个文本文件?当使用 R 将这个文件导入 R 时,使用 say read.csv(file="character_student.txt) 是否合适?
那么我的另一个问题是,如果我有这样的文件:
Name Age Gender Test1
john 11 M 90
betty 25 F 33
所以每个文件之间只有一个空格,然后说我将其保存为 .csv 文件,然后我认为文件名将变为 character_text.csv。那我就想知道这个文件现在是空格分隔的文件还是逗号分隔的文件?
我想我的问题是我怎么知道我的文件是否是逗号分隔的文件?还是以空格分隔的文件?还是制表符分隔?
是否纯粹基于文件名?例如,如果名称以 csv 结尾,那么它是逗号分隔的文件,如果它以其他内容结尾,那么是“其他内容”分隔文件?那么文件内部的实际外观是否重要呢?就像我们是否必须打开文件以检查是否有逗号分隔字段以确保文件是逗号分隔的文件?或者如果我们有一个 csv 文件但在其中,该字段可以被其他东西分隔?
或者如果它被称为csv,那么里面的每个字段都用逗号分隔(就像我不必打开它来确保它实际上是用逗号分隔一样)?
【问题讨论】:
-
通过查看?扩展在 Linux 中没有任何意义,CSV 和 ald TAB 分隔的文件也是文本文件,但有一个用户遵循的特殊约定。
-
这些是分隔文件格式,
.csv扩展名只是一种命名约定(主要来自 Windows 世界),用于将可执行文件映射到文件。它不强制使用内部分隔符。 -
CSV 文件通常使用不同的分隔符,例如制表符 (
\t) 和管道 (|)。另见Reading Tab Delimited Data in to R、Delimiters while writing csv files in R 和朋友。 -
不,不是 CSV 中的每个逗号都必须是字段分隔符,并且 CSV 有多种方言。通常,您可以将带有嵌入逗号的字段用双引号括起来。
this,is,"a csv snippet, and has an embedded comma",sigh. -
您的第一个文件是每个人都会称之为 CSV 文件的文件,即使扩展名是其他文件。请注意,就像@tink 所说,CSV 有方言。在欧洲大陆或小数点以逗号标记的国家/地区,最常用的字段分隔符是分号
";"。在 R 中,这将被读入read.csv2,而不是read.csv。仔细阅读帮助页面help("read.table")。
标签: r linux bash csv delimiter