【问题标题】:Read in csv with more columns than column names in R读取 csv 中的列多于 R 中的列名
【发布时间】:2015-07-13 08:38:04
【问题描述】:

所以我试图将 csv 读入 R,如果我使用

data = read.csv("2013_NBAseason.csv", header = T)

我收到一个错误

Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
duplicate 'row.names' are not allowed"

这是因为日期不是唯一的,因为每天都会玩多个游戏。因此,我尝试使用 this 删除最后一列,但仍然出现相同的错误。

问题的原因,看了this之后觉得是因为我最后一栏没有标题

所以我做到了

data = read.csv("2013_NBAseason.csv", header = T, 
                 colClasses=c(rep(NA,7),"NULL"), row.names=NULL)

现在我有一个数据框,它的所有列名都移了过来,右边有一个空列

head(data)
          row.names      Date          Box.Score Away          Away_Points Home  Home_Points
1 Tue, Oct 30, 2012 Box Score Washington Wizards   84  Cleveland Cavaliers   94
2 Tue, Oct 30, 2012 Box Score   Dallas Mavericks   99   Los Angeles Lakers   91
3 Tue, Oct 30, 2012 Box Score     Boston Celtics  107           Miami Heat  120
4 Wed, Oct 31, 2012 Box Score   Sacramento Kings   87        Chicago Bulls   93

解决此问题或避免问题的最佳方法是什么?

另外,如果有人告诉我如何添加 csv,我可以上传它,以便你们可以看到原始数据。

此外,手动更改 csv 也行不通,因为这需要用类似的方法外推到更多 csvs

temp = list.files(pattern="*.csv")
data = do.call("rbind", lapply(temp, read.csv, ...

【问题讨论】:

  • 您可能想从data.table 包中签出fread。我认为它在读取数据时没有这个限制。
  • 您是否尝试过使用制表符分隔,例如在 read.csv 选项中设置sep = "\t"?默认分隔符是逗号,但您的日期变量似乎有逗号,这可能会导致问题。

标签: r csv dataframe read.csv


【解决方案1】:

你为什么不试试不使用header = T

这样做:

#read data without any row names
data <- read.csv("2013_NBAseason.csv")

#enter string "home_points" to last column. I am assuming it is column 6.
data[1, 6] <- "Home_Points"

#make row 1, your column names
colnames(data) = data[1, ]

以上解决了吗?

【讨论】:

  • 我试过这个,但是在命名我的列后删除第一行时,它会丢失列名。我可能做错了,如果你能解决这个问题,那么我会这样做
  • 实际上,只需将 csv 中的 2-3 行数据复制到 R 中的数据框中并粘贴到此处。
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 2014-06-12
  • 2020-05-15
  • 2019-07-03
  • 2019-07-03
  • 2017-10-20
  • 2021-08-30
  • 2016-08-03
相关资源
最近更新 更多