在西班牙计算机上将 .csv 文件读入 R 时忽略逗号分隔符 [重复]

Posted

技术标签:

【中文标题】在西班牙计算机上将 .csv 文件读入 R 时忽略逗号分隔符 [重复]【英文标题】:Comma separator ignored when reading in .csv files to R on a Spanish computer [duplicate] 【发布时间】:2020-06-05 09:38:28 【问题描述】:

我有一台西班牙语计算机,在法语环境中工作,其中小数点分隔符通常是逗号。我更习惯将句点用作小数分隔符,因此更改了 Microsoft Excel 中的分隔符,并在将文件读取为 R 时指定了分隔符,如下所示:

eg <- read.csv("D:/02_COVID-19/Analysis/eglonglat.csv", dec = ".", sep = ",", header = TRUE, stringsAsFactors = FALSE)

但是,逗号分隔符似乎被忽略了,因为 .csv 有三列,而读入 R 时它只有一列。

我在 Windows 7 笔记本电脑上使用全新安装的 R 4.0 和 RStudio 1.3.959。

有什么想法吗?我只是想从使用句点作为小数分隔符的堆栈溢出帖子中复制一些示例数据-不确定是否是 excel 的干预导致了这里的问题(看起来小数点分隔符是句点,但也许不是在后台?)

以下是读入后在 R 中的输出:

> eg
            index.lat.lon
1    1;51.513393;-0.11565
2   2;51.513428;-0.115461
3   3;51.513428;-0.115462
4   4;51.513428;-0.115465
5    5;51.513428;-0.11547
6   6;51.513432;-0.115462
7   7;51.513432;-0.115467
8   8;51.513435;-0.115471
9   9;51.513439;-0.115468
10 10;51.513439;-0.115469

【问题讨论】:

【参考方案1】:

read.csv 中,您需要sep = ";" 来分隔列,dec = "," 来考虑带逗号分隔符的小数。

eg <- read.csv("D:/02_COVID-19/Analysis/eglonglat.csv", sep = ";", dec = ",")

这些是read.csv2 中的默认设置

eg <- read.csv2("D:/02_COVID-19/Analysis/eglonglat.csv")

由于您使用的是 R 4.0.0,因此您不需要 stringsAsFactors = FALSE


进一步调试,似乎 OP 有 "." 作为小数点分隔符,所以这可行:

eg <- read.csv("D:/02_COVID-19/Analysis/eglonglat.csv", sep = ";")

【讨论】:

感谢stringsAsFactors 的提示,很高兴知道它不再转换为默认因子... @AmyM 答案有效吗?现在看看输出我想你可能需要eg &lt;- read.csv("D:/02_COVID-19/Analysis/eglonglat.csv", sep = ";") 它们现在被读取为三列,但 col 类是字符 - 这通常不会检测到它们是数字吗? 你是对的 - 不指定小数点分隔符似乎有效(它们被解释为数字,小数点分隔符在正确的位置) 感谢@akrun 指向此question,它解释了在使用逗号作为小数分隔符的国家/地区,.csv 文件列分隔符实际上是分号,而不是逗号。因此,即使我将小数分隔符逗号更改为句点,列分隔符仍然是分号,可以通过指定 sep = ";"read.csv 或使用 read.csv2 来处理,而不是使用分号作为默认列分隔符.

以上是关于在西班牙计算机上将 .csv 文件读入 R 时忽略逗号分隔符 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

R语言csv与txt文本读入区分(sep参数)

如何按行条件将巨大的 csv 文件读入 R?

将大型 csv 文件从 S3 读入 R

无法将 unicode .csv 读入 R

将文件夹中的多个csv文件读入R中的单个数据框[重复]

将多条csv行读入R中的单行