read.table时,skip = 1对textConnect没有影响

时间:2014-05-01 03:16:24

标签: r

我想在阅读文本时跳过第一行。

raw_data='
编号,性别,序号,民族,籍贯,系部
1,男,20130990,壮族,广西省,旅游系
24,男,20130520,汉族,广东省,经管系
48,女,20131065,汉族,河北省,艺术系,,
49,女,20131066,汉族,湖南省,艺术系,,
50,女,20131067,汉族,广东省,艺术系,,
129,男,20130340,汉族,海南省,经管系
131,男,20130342,汉族,四川省,经管系'
x <- textConnection(raw_data)
data<-read.table(x,sep=",",skip=1,col.names=1:8,fill=TRUE)

我想要的是:

   X1 X2       X3   X4     X5     X6 X7 X8
1   1 男 20130990 壮族 广西省 旅游系 NA NA
2  24 男 20130520 汉族 广东省 经管系 NA NA
3  48 女 20131065 汉族 河北省 艺术系 NA NA
4  49 女 20131066 汉族 湖南省 艺术系 NA NA
5  50 女 20131067 汉族 广东省 艺术系 NA NA
6 129 男 20130340 汉族 海南省 经管系 NA NA
7 131 男 20130342 汉族 四川省 经管系 NA NA

不是:

    X1   X2       X3   X4     X5     X6 X7 X8
1 编号 性别     序号 民族   籍贯   系部 NA NA
2    1   男 20130990 壮族 广西省 旅游系 NA NA
3   24   男 20130520 汉族 广东省 经管系 NA NA
4   48   女 20131065 汉族 河北省 艺术系 NA NA
5   49   女 20131066 汉族 湖南省 艺术系 NA NA
6   50   女 20131067 汉族 广东省 艺术系 NA NA
7  129   男 20130340 汉族 海南省 经管系 NA NA
8  131   男 20130342 汉族 四川省 经管系 NA NA

也许我不能以read.table(textConnection())的形式跳过第一行?

3 个答案:

答案 0 :(得分:1)

我认为问题在于第一行实际上是一个空字符向量 我们可以使用readLines

查看
> x <- textConnection(raw_data)
> readLines(x)
## [1] ""                                    "编号,性别,序号,民族,籍贯,系部"      
## [3] "1,男,20130990,壮族,广西省,旅游系"    "24,男,20130520,汉族,广东省,经管系"  
## [5] "48,女,20131065,汉族,河北省,艺术系,," "49,女,20131066,汉族,湖南省,艺术系,,"
## [7] "50,女,20131067,汉族,广东省,艺术系,," "129,男,20130340,汉族,海南省,经管系" 
## [9] "131,男,20130342,汉族,四川省,经管系" 

我们可以使用sub删除raw_data

开头的额外新行
> read.table(text = sub("\\n", "", raw_data), 
             sep = ",", skip = 1, fill = TRUE)
##    V1 V2       V3   V4     V5     V6 V7 V8
## 1   1 男 20130990 壮族 广西省 旅游系 NA NA
## 2  24 男 20130520 汉族 广东省 经管系 NA NA
## 3  48 女 20131065 汉族 河北省 艺术系 NA NA
## 4  49 女 20131066 汉族 湖南省 艺术系 NA NA
## 5  50 女 20131067 汉族 广东省 艺术系 NA NA
## 6 129 男 20130340 汉族 海南省 经管系 NA NA
## 7 131 男 20130342 汉族 四川省 经管系 NA NA 

答案 1 :(得分:1)

您的规范中有一个额外的换行符。您可以跳过两行,并按原样删除额外的换行符和第一行:

 data<-read.table(x,sep=",",skip=2,col.names=1:8,fill=TRUE)

或者您可以删除额外的换行符并单独跳过第一行:

raw_data='编号,性别,序号,民族,籍贯,系部
1,男,20130990,壮族,广西省,旅游系
24,男,20130520,汉族,广东省,经管系
48,女,20131065,汉族,河北省,艺术系,,
49,女,20131066,汉族,湖南省,艺术系,,
50,女,20131067,汉族,广东省,艺术系,,
129,男,20130340,汉族,海南省,经管系
131,男,20130342,汉族,四川省,经管系'
x <- textConnection(raw_data)
data<-read.table(x,sep=",",skip=1,col.names=1:8,fill=TRUE)

data
   X1 X2       X3   X4     X5     X6 X7 X8
1   1 男 20130990 壮族 广西省 旅游系 NA NA
2  24 男 20130520 汉族 广东省 经管系 NA NA
3  48 女 20131065 汉族 河北省 艺术系 NA NA
4  49 女 20131066 汉族 湖南省 艺术系 NA NA
5  50 女 20131067 汉族 广东省 艺术系 NA NA
6 129 男 20130340 汉族 海南省 经管系 NA NA
7 131 男 20130342 汉族 四川省 经管系 NA NA

答案 2 :(得分:0)

Use data<-data[-1,]

如果第一行是标题,请使用header = FALSE。