【问题标题】:read.table cut off a long row into half. how to reorganize the cvs fileread.table 将一长排切成两半。如何组织csv文件
【发布时间】:2015-08-16 14:23:15
【问题描述】:
c <- read.table("sid-110-20130826T164704.csv", sep = ',', fill=TRUE, )

所以我使用上面的代码读取了大约 300 个 csv 文件。 有些文件看起来像这样

65792,1,round-5,72797,140,yellow,75397,192,red,75497,194,crash
86267,1,round6,92767,130,yellow,94702,168,brake,95457,178,go,95807,185,red,96057,190,brake,97307,200,crash
108092,1,round-7,116157,130,yellow,117907,165,red
120108,1,round-8,130173,130,yellow,130772,142,brake,133173,152,red
137027,1,round-9,147097,130,yellow,148197,152,brake,148597,160,red

如您所见,第二行比其他行长(对于每一行,第三个元素应该有圆形#),当我 read.table R 将行切成两半时,我从下面复制了前 5 列 R

9                86267               1  round-6  92767 130
10               95807             185      red  96057 190
11               108092               1  round-7 116157 130
12               120108               1  round-8 130173 130

有没有办法编辑它,使行是一行而不是被拆分?

【问题讨论】:

  • 我猜你需要在里面放一些东西来指定你期望的列数。 read.table 仅检查前几行以确定预期的列数。

标签: r csv rstudio


【解决方案1】:

您可以通过指定“col.names”参数和“fill=TRUE”来填充 data.frame 宽度,如下所示:

c <- read.table("sid-110-20130826T164704.csv", sep = ',', fill=TRUE, 
            col.names=paste("V", 1:21,sep=""))

这是假设您知道自己有多少列。如果您不知道,您可能需要单次遍历文件以找到最大宽度。

【讨论】:

  • 谢谢,效果很棒。另一个棘手的部分是我的目标是将 300 个文件导入到一个巨大的表中,有些文件有 12 列,有些有 18 列,甚至更多。有没有办法使用 R 找出所有 300 个文件的最大列宽是多少?
  • 您可以使用readlinesstrsplit 一次在一行中读取它们,并使用rbind 附加新行(对于每一行)和cbind 附加新列(仅当当前行的记录多于您正在增长的大矩阵时)。它看起来像:
  • 更简单的方法是使用系统命令将所有文件附加在一起并读入一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 2021-08-31
相关资源
最近更新 更多