R-导入CSV文件,所有数据归入一列(第一列)

R o*_*low 2 csv load r

我是新手,但有一个问题:

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

当我在Excel中查看数据时看起来不错,但是当我尝试将数据加载到R-studio时出现问题:

我使用了代码:

x <- read.csv(file = "1energy.csv", head = TRUE, sep="")
View(x)
Run Code Online (Sandbox Code Playgroud)

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

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

x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=";")
Run Code Online (Sandbox Code Playgroud)

下一个问题是:read.table中的错误(文件=文件,标头=标头,sep = sep,引用=引号,:不允许重复的“ row.names”

所以我做了代码:

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

看起来好像可以正常工作...。但是现在数据位于错误的列中(例如,“名称”列现在包含“时间”值,而“时间”列包含“成本”值)。

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

Pav*_* El 5

至少在英语版本的Excel中,可能使用逗号作为分隔符,因此您可能需要尝试

x1 <- read.csv(file = "1energy.csv", head = TRUE, sep=",")
Run Code Online (Sandbox Code Playgroud)

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

x1 <- read.csv(file = "1energy.csv", skip = 1, head = FALSE, sep=";")
Run Code Online (Sandbox Code Playgroud)

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

myColNames <- c(“col1.name”,”col2.name”)
names(x1) <- myColNames
Run Code Online (Sandbox Code Playgroud)

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

nameLine <- readLines(="1energy.csv", n=1)
fileColNames <- unlist(strsplit(nameLine,”;”))
Run Code Online (Sandbox Code Playgroud)

然后查看如何解决问题,然后将名称s分配给x1数据框。我不知道您的第一行到底有什么问题,所以我无法告诉您如何解决。

另一个更简单的选择是使用文本编辑器打开csv文件并编辑列名。