Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取R中跨多行的固定宽度文件中的观测值_R_Read.table - Fatal编程技术网

读取R中跨多行的固定宽度文件中的观测值

读取R中跨多行的固定宽度文件中的观测值,r,read.table,R,Read.table,我正在尝试读取R中的dat文件。数据可用 关于数据集的规范是可用的 我的问题的第一部分是通过使用sep选项解决的,它提供了关于每列开始位置的信息,并提供了na.strings=*。然而,我不知道如何处理跨越一条以上直线的单个观测 在该数据集中,所有观测值跨越2条线 您可以使用选项fill=TRUE 然后,如果您想获得separated data.frame中的每一行;我是说第1行,第3行,。。在data.frame和第2行、第4行中,。。在另一个data.frame中,可以执行以下操作: dat

我正在尝试读取R中的dat文件。数据可用

关于数据集的规范是可用的

我的问题的第一部分是通过使用sep选项解决的,它提供了关于每列开始位置的信息,并提供了na.strings=*。然而,我不知道如何处理跨越一条以上直线的单个观测

在该数据集中,所有观测值跨越2条线

您可以使用选项fill=TRUE

然后,如果您想获得separated data.frame中的每一行;我是说第1行,第3行,。。在data.frame和第2行、第4行中,。。在另一个data.frame中,可以执行以下操作:

dat.even <- dat[c(FALSE,TRUE),]
dat.odd  <- dat[c(TRUE,FALSE),]
这里有一个解决方法:

link <- "http://www.amstat.org/publications/jse/datasets/93cars.dat.txt"
结果是:

> head(dat)
     V1      V2      V3   V4   V5   V6 V7 V8 V9 V10 V11 V12 V13  V14  V15 V16  V17
1 Acura Integra   Small 12.9 15.9 18.8 25 31  0   1   4 1.8 140 6300 2890   1 13.2
2 Acura  Legend Midsize 29.2 33.9 38.7 18 25  2   1   6 3.2 200 5500 2335   1 18.0
3  Audi      90 Compact 25.9 29.1 32.3 20 26  1   1   6 2.8 172 5500 2280   1 16.9
4  Audi     100 Midsize 30.8 37.7 44.6 19 26  2   1   6 2.8 172 5500 2535   1 21.1
5   BMW    535i Midsize 23.7 30.0 36.2 22 30  1   0   4 3.5 208 5700 2545   1 21.1
6 Buick Century Midsize 14.2 15.7 17.3 22 31  1   1   4 2.2 110 5200 2565   0 16.4
  V18 V19 V20 V21 V22  V23 V24  V25 V26
1   5 177 102  68  37 26.5  11 2705   0
2   5 195 115  71  38 30.0  15 3560   0
3   5 180 102  67  37 28.0  14 3375   0
4   6 193 106  70  37 31.0  17 3405   0
5   4 186 109  69  39 27.0  13 3640   0
6   6 189 105  69  41 28.0  16 2880   1
实际上,您需要read.fwf来执行此操作

设置一些示例数据

    txt <- 'Acura         Integra        Small   12.9 15.9 18.8 25 31 0 1 4 1.8 140 6300
2890 1 13.2 5 177 102 68 37 26.5 11 2705 0
Acura         Legend         Midsize 29.2 33.9 38.7 18 25 2 1 6 3.2 200 5500
2335 1 18.0 5 195 115 71 38 30.0 15 3560 0
Audi          90             Compact 25.9 29.1 32.3 20 26 1 1 6 2.8 172 5500
2280 1 16.9 5 180 102 67 37 28.0 14 3375 0'
使用pander软件包漂亮地打印表格,因为它有很多列

require(pander)
pandoc.table(DF)
## 
## ---------------------------------------------------
##  V1     V2      V3     V4   V5   V6   V7   V8   V9 
## ----- ------- ------- ---- ---- ---- ---- ---- ----
## Acura Integra  Small  12.9 15.9 18.8  25   31   0  
## 
## Acura Legend  Midsize 29.2 33.9 38.7  18   25   2  
## 
## Audi    90    Compact 25.9 29.1 32.3  20   26   1  
## ---------------------------------------------------
## 
## Table: Table continues below
## 
##  
## -----------------------------------------------
##  V10   V11   V12   V13   V14   V15   V16   V17 
## ----- ----- ----- ----- ----- ----- ----- -----
##   1     4    1.8   140  6300  2890    1   13.2 
## 
##   1     6    3.2   200  5500  2335    1   18.0 
## 
##   1     6    2.8   172  5500  2280    1   16.9 
## -----------------------------------------------
## 
## Table: Table continues below
## 
##  
## -----------------------------------------------
##  V18   V19   V20   V21   V22   V23   V24   V25 
## ----- ----- ----- ----- ----- ----- ----- -----
##   5    177   102   68    37   26.5   11   2705 
## 
##   5    195   115   71    38   30.0   15   3560 
## 
##   5    180   102   67    37   28.0   14   3375 
## -----------------------------------------------
## 
## Table: Table continues below
## 
##  
## -----
##  V26 
## -----
##   0  
## 
##   0  
## 
##   0  
## -----
## 

你能解释一下@ArkidMitra的行吗?我添加了一个解释。对我来说效果很好。我的下一个问题是,有没有更标准的方法?
dat <- read.table(text = lines, na.string = "*")
> head(dat)
     V1      V2      V3   V4   V5   V6 V7 V8 V9 V10 V11 V12 V13  V14  V15 V16  V17
1 Acura Integra   Small 12.9 15.9 18.8 25 31  0   1   4 1.8 140 6300 2890   1 13.2
2 Acura  Legend Midsize 29.2 33.9 38.7 18 25  2   1   6 3.2 200 5500 2335   1 18.0
3  Audi      90 Compact 25.9 29.1 32.3 20 26  1   1   6 2.8 172 5500 2280   1 16.9
4  Audi     100 Midsize 30.8 37.7 44.6 19 26  2   1   6 2.8 172 5500 2535   1 21.1
5   BMW    535i Midsize 23.7 30.0 36.2 22 30  1   0   4 3.5 208 5700 2545   1 21.1
6 Buick Century Midsize 14.2 15.7 17.3 22 31  1   1   4 2.2 110 5200 2565   0 16.4
  V18 V19 V20 V21 V22  V23 V24  V25 V26
1   5 177 102  68  37 26.5  11 2705   0
2   5 195 115  71  38 30.0  15 3560   0
3   5 180 102  67  37 28.0  14 3375   0
4   6 193 106  70  37 31.0  17 3405   0
5   4 186 109  69  39 27.0  13 3640   0
6   6 189 105  69  41 28.0  16 2880   1
    txt <- 'Acura         Integra        Small   12.9 15.9 18.8 25 31 0 1 4 1.8 140 6300
2890 1 13.2 5 177 102 68 37 26.5 11 2705 0
Acura         Legend         Midsize 29.2 33.9 38.7 18 25 2 1 6 3.2 200 5500
2335 1 18.0 5 195 115 71 38 30.0 15 3560 0
Audi          90             Compact 25.9 29.1 32.3 20 26 1 1 6 2.8 172 5500
2280 1 16.9 5 180 102 67 37 28.0 14 3375 0'
DF <- read.fwf(textConnection(txt), 
               widths = list(
                 c(14, 15, 8, 5, 5, 5, 3, 3, 2, 2, 2, 4, 4, 4), 
                 c(5, 2, 5, 2, 4, 4, 3, 3, 5, 3, 5, 1)
               ), 
               header = FALSE)
require(pander)
pandoc.table(DF)
## 
## ---------------------------------------------------
##  V1     V2      V3     V4   V5   V6   V7   V8   V9 
## ----- ------- ------- ---- ---- ---- ---- ---- ----
## Acura Integra  Small  12.9 15.9 18.8  25   31   0  
## 
## Acura Legend  Midsize 29.2 33.9 38.7  18   25   2  
## 
## Audi    90    Compact 25.9 29.1 32.3  20   26   1  
## ---------------------------------------------------
## 
## Table: Table continues below
## 
##  
## -----------------------------------------------
##  V10   V11   V12   V13   V14   V15   V16   V17 
## ----- ----- ----- ----- ----- ----- ----- -----
##   1     4    1.8   140  6300  2890    1   13.2 
## 
##   1     6    3.2   200  5500  2335    1   18.0 
## 
##   1     6    2.8   172  5500  2280    1   16.9 
## -----------------------------------------------
## 
## Table: Table continues below
## 
##  
## -----------------------------------------------
##  V18   V19   V20   V21   V22   V23   V24   V25 
## ----- ----- ----- ----- ----- ----- ----- -----
##   5    177   102   68    37   26.5   11   2705 
## 
##   5    195   115   71    38   30.0   15   3560 
## 
##   5    180   102   67    37   28.0   14   3375 
## -----------------------------------------------
## 
## Table: Table continues below
## 
##  
## -----
##  V26 
## -----
##   0  
## 
##   0  
## 
##   0  
## -----
##