楼主: kk22boy
3052 7

[问答] 这样数据如何读入? [推广有奖]

  • 8关注
  • 95粉丝

一叶知秋

已卖:9094份资源

学科带头人

51%

还不是VIP/贵宾

-

TA的文库  其他...

计量经济与统计

SSCI、权威 论文写作及投稿经验

威望
1
论坛币
57181 个
通用积分
130.0821
学术水平
437 点
热心指数
492 点
信用等级
393 点
经验
68023 点
帖子
1586
精华
0
在线时间
2192 小时
注册时间
2005-3-10
最后登录
2025-5-25

初级热心勋章 初级信用勋章

楼主
kk22boy 发表于 2012-5-1 08:48:19 |AI写论文
10论坛币
部分数据如下,每一行的长度都不一样,直接read.table会提示

> x=read.table("racing.txt")

错误于scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :   3行没有13元素

racing.zip (1.27 KB) 本附件包括:
  • racing.txt

谢谢高手指点~




最佳答案

epoh 查看完整内容

ywh兄建议的小修改如下: fileID
关键词:strings string racing Table rings 数据 如何
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
epoh + 1 + 1 + 1 鼓励积极发帖讨论

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

沙发
epoh 发表于 2012-5-1 08:48:20
ywh兄建议的小修改如下:
fileID <- file("racing.txt",open="rt")
nFields <- count.fields(fileID)
mat <- matrix(nrow=length(nFields),ncol=max(nFields))
invisible(seek(fileID,where=0,origin="start",rw="read"))  #81 x 19 NA matrix
for(i in 1:nrow(mat) ) {
   mat[i,1:nFields] <-scan(fileID,what=double(),nlines=1,quiet=TRUE)
}
close(fileID)
df <- as.data.frame(mat)
df

###################
由于你的data matrix,每个row差异很大
若是第一个row是最长的,那好办
read.csv("racing1.csv",na.strings='',header=FALSE)
racing1.csv
racing1.rar (1.12 KB) 本附件包括:
  • racing1.csv


##################
要不然就类似unbalanced data: '.' or 'NA'
racing.csv
racing.rar (1.14 KB) 本附件包括:
  • racing.csv

race= read.csv("racing.csv",na.strings='.',header=FALSE)
#or replace these by zeros:
race[is.na(race)] <- 0
race
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 5 + 5 + 5 好的建议,学习了
kk22boy + 5 + 5 + 5 谢谢,epoh兄,过五一也没出去玩一下呀,呵呵.

总评分: 学术水平 + 10  热心指数 + 10  信用等级 + 10   查看全部评分

藤椅
ywh19860616 发表于 2012-5-1 10:00:53
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
kk22boy + 5 + 5 + 5 谢谢ywh兄!
epoh + 1 + 1 + 1 热心

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

一份耕耘,一份收获。

板凳
qoiqpwqr 发表于 2012-5-1 10:38:38
可以用read.fwf来按指定的列读取
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
kk22boy + 2 + 2 + 2 谢谢版主!

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

报纸
kk22boy 发表于 2012-5-1 14:37:11
恩,谢谢楼上各位!
借鉴epoh兄的方法,先转成csv再读取,呵呵,受教啦~~
再次谢谢各位~~
如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

地板
kk22boy 发表于 2012-5-1 14:39:19
另外在读取过程中如果碰到“在读取'file.csv'时遇到了不完全的最后一行”的情况
可以把数据重新复制粘贴成一个新的csv文件,再读这个文件就好了

给后来的同学作参考,呵呵
如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

7
kk22boy 发表于 2012-5-1 15:01:47
呵呵,转成csv读取的话老出现莫名其妙的问题,
可以考虑先转成excel,然后
library(RODBC)
x<-odbcConnectExcel("racing.xls")
xx<-sqlFetch(x,"Sheet1")
这样也挺顺利
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
famousid + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

8
ywh19860616 发表于 2012-5-1 15:46:20
kk22boy 发表于 2012-5-1 14:39
另外在读取过程中如果碰到“在读取'file.csv'时遇到了不完全的最后一行”的情况
可以把数据重新复制粘贴成 ...
出现这种情况,一般是很多人直接把xls改为csv文件,而不是另存为。
如果排除了上面的情况而还是错误的话,那么在最后一个数字上按下Enter键有效。
哈哈,看到别人的总结,据说有效,以后可以考虑。
一份耕耘,一份收获。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 16:46