R- 导入 CSV 文件,所有数据都属于一个(第一)列

R- import CSV file, all data fall into one (the first) column

我是新手,遇到了问题:

我得到了一个包含 15 列和 33,000 行的数据集(csv 文件)。

当我查看 Excel 中的数据时,它看起来不错,但是当我尝试加载数据时 进入 R- studio 我有一个问题:

我使用了代码:

x <- read.csv(file = "1energy.csv", head = TRUE, sep="")
View(x)

结果是列名很好,但数据(第 2 行及以后)是 全部在我的第一专栏中。

在第一列中,数据用 ; 分隔。 .但是当我尝试代码时:

x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=";")

下一个问题是:read.table(file = file, header = header, sep = sep, quote = quote, : 不允许重复 'row.names'

所以我编写了代码:

x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=";", row.names = NULL)

它看起来很有效....但现在数据在错误的列中(例如,"name" 列现在包含 "time" 值,而 "time" 列包含 "costs" 值。

有人知道如何解决这个问题吗?我可以重命名列,但我认为这不是最好的方法。

Excel,至少在英文版中,可能会使用逗号作为分隔符,因此您可能想尝试

x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=",")

我曾经遇到过类似的问题,其中 header 有一个很长的条目,其中包含一个 read.csv 误认为列分隔符的字符。实际上,这是一个长名字的一部分,没有被正确引用。 尝试跳过 header 并查看问题是否仍然存在

x1 <- read.csv(file = "1energy.csv", skip = 1, head = FALSE, sep=";")

回复您的评论: 你可以做两件事。最简单的一种是手动分配名称:

myColNames <- c(“col1.name”,”col2.name”)
names(x1) <- myColNames

另一种方法是只读取名称行(文件中的第一行) 只读取第一行,将其拆分为 character 向量

nameLine <- readLines(con="1energy.csv", n=1)
fileColNames <- unlist(strsplit(nameLine,”;”))

然后查看如何解决问题,然后为 x1 数据框指定名称。我不知道你的第一行到底有什么问题,所以我不能告诉你如何解决它。

还有一个更粗略的选择是使用文本编辑器打开您的 csv 文件并编辑列名。

此问题可能是由创建 .csv 文件的 excel 应用程序的区域设置引起的。

虽然在大多数地方用“,”分隔逗号分隔文件中的列(这是有道理的),但在其他地方它是“;”

根据您的区域设置,您可以尝试:

x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=",") #used in North America

或者,

   x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=";") #used in some parts of Asia and Europe 

它的发生是因为 Exel 的特殊性。简单的解决方案就是将所有数据 Ctrl+C 复制到记事本,然后从记事本中再次将其另存为 filename.csv(如有必要,请不要忘记删除 .txt)。它对我很有效。 R 正确打开这个新创建的 csv 文件,所有数据都在右侧的列中分隔。

您可以通过将数据排列到与列对应的许多单元格中来转换数据。

1.Open 你的 csv 文件 2.copy 内容并将其粘贴到 txt 文件中保存并复制其内容

3.open新建excel文件 4.in excell 转到负责数据的部分。它实际上被称为 "Data" 5.then左边去外部数据查询,德语"externe Daten abfragen" 6.go 一步步向前,以逗号分隔 7. 将文件保存为 csv

在文本编辑器中打开你的文件,看看它是否真的用逗号分隔... 有时 .csv 文件用制表符而不是逗号或分号分隔,在 excel 中打开时没有问题,但在 R 中你必须像这样指定分隔符:

x <- read.csv(file = "1energy.csv", head = TRUE, sep="\t")

我曾经遇到过同样的问题,这是我的解决方案。希望对你有用。

我遇到了同样的问题,令人沮丧...

不过,我找到了最终的解决方案 首先获取这个(csv 文件),然后在线将其转换为 Json 文件并下载……然后在线重做整个过程(将 Jason 重新转换为 csv)……下载转换后的文件……给它起个名字...

然后把它放到你的 Rstudio 上

file name <- read.csv(file='name your file.csv') ... took me 4 days to think out of the box...

你可以使用 -

df <- read.csv("filename.csv", sep = ";", quote = "")

它解决了我的一个与你类似的问题。

So i made the code:

x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=";", row.names = NULL) And it looks liked it worked.... But now the data is in the wrong columns (for example, the "name" column contains now the "time" value, and the "time" column contains the "costs" value.

Does anybody know how to fix this? I can rename columns but i think that is not the best way.

我遇到了完全相同的问题。做了很多研究,发现 CSV 是 ill-formed

在 CSV 的 header 行中有所有标签(由分隔符分隔),然后是换行符。 从第 2 行开始,每行末尾都有一个额外的分隔符。因此,此类 ill-formed CSV 文件的示例如下所示:

Field1;Field2   <-- see the *missing* semicolon at the end
12;23;          <-- see the *trailing* semicolon in each of the data lines
34;67;
45;56;

这样的 ill-formatted 文件更难发现 TAB-separated 文件。

Excel 在导入 CSV 文件时不关心这一点。 但 R 确实关心。

当您使用 skip=1 时,您会跳过包含部分不匹配的 header 行。数据框会被很好地导入,但是每一行的末尾都会有一列“NA”。显然你不会有列名,因为这些被跳过了。

最简单的解决方案:编辑 CSV 文件,或者在 header 行的末尾添加一个额外的分隔符,或者 删除数据行中的尾随分隔符。您还可以使用 R 中的通用读写函数对文本文件进行自动编辑。