[英]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.