繁体   English   中英

在R中读取具有重复行名的csv文件

[英]reading a csv file with repeated row names in R

我正在尝试读取具有重复行名的csv文件,但无法。 我收到的错误消息是Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.

我使用的代码是:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"))

我的数据示例如下:

did <- c("1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657")
aid <- c(101,102,103,104,105,106,107,108,109,110)
temp <- c(36,38,37,39,35,37,36,34,39,38)

data <- cbind(did,aid,temp)

任何帮助将不胜感激。

该函数看到重复的行名,因此您需要进行处理。 可能最简单的方法是使用row.names = NULL ,这将强制进行行编号-换句话说,它将第一列视为第一维而不是行号,因此添加行号(以“ 1“。

read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL)

尝试这个:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"), 
          row.names = NULL)[,-1]

我最近遇到的一个问题是,标题行中的列数与数据本身中的列数不匹配。 例如,我的数据使用制表符分隔,并且所有数据行均带有尾随制表符。 标题行(我已手动添加)没有。

我希望对行进行自动编号,但实际上是将第一行作为行名。 从文档(重点由我添加):

row.names是行名的向量。 这可以是给出实际行名的向量,也可以是给出包含行名的表的列的单个数字,也可以是给出包含行名的表列的名称的字符串。

如果有标题,并且第一行包含的字段少于列数,则输入中的第一列用作行名。 否则,如果缺少row.names,则会对行进行编号。

使用row.names = NULL强制行编号。 缺少或为空的row.names会生成被认为是“自动”的行名(并且不会被as.matrix保留)。

在标题行中添加额外的制表符使标题行与数据行的列数相同,从而解决了该问题。

猜测csv文件是从xlsx转换而来的。在第一行的末尾添加逗号,删除最后一行,完成

对于小型CSV,我收到相同的“不允许重复的“ row.names””错误。 问题是我想在14x14图表区域之外的某个地方有一个随机的单元格,上面有空格/其他数据。

当我运行它时发现了答案“ row.names = NULL”,并且表下方有多行空白数据(因此,多个重复的行名全为“ blank”)。

解决的办法是删除表区域之外的所有行/列,并且行得通!

简而言之, 请检查您的列名 如果第一行是列的名称,则可能缺少一个或多个名称。

例:

"a","b","c"
a,b,c,d
a,b,c,d

上面的示例将导致row.name错误,因为每行有4个值,但仅命名了3列。

当我从在线资源构建csv时,这发生在我身上。

就我而言,问题来自excel文件。 尽管它看起来似乎组织得很好,但是它没有用,并且我总是收到以下消息: Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.

我试图将我的excel矩阵复制粘贴到一个新的空excel表中,然后尝试重新阅读它:它起作用了! 不再有错误消息!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM