在 R 中读取带有制表符和分号的文本文件

标签 r import read.table

我正在尝试导入包含以下信息的文本文件:

Date (Tab) ON/OFF (Tab) 93489;123985;219389;1324;2349
Date (Tab) ON/OFF (Tab) 34536;34566;12346;235346;32567
Date (Tab) ON/OFF (Tab) 6346;235;6547457;2345;4576782

因此,我使用 read.table()read.csv() 以及参数 sep=";"sep="\t"。 它们起作用,但不能同时起作用。有没有更好的方法来导入这些数据?读取同时使用制表符和分号的文件?

最后,我需要提取的值,但目前这是不可能的,因为我得到这样的东西(包括“)

"18315;18316;18317;18318;18319;18320;18708"
"20317;20318;20319;20320;20321;20322;20714"

我可以替换“;”与“”,但它仍然是一个字符串,并且 strsplit() 不起作用...

"85626"
"81657 83249"
"84165 84560 84561 84957 85351 85746 85747 85748 86143"
"77701 78097 78893 86148 86149 86150"

最佳答案

为什么不先用分号替换制表符(或多空格),然后正常导入:

tx<-"Date  ON/OFF  93489;123985;219389;1324;2349
Date  ON/OFF  34536;34566;12346;235346;32567
Date  ON/OFF  6346;235;6547457;2345;4576782"

read.table(text=gsub("([ /t]){2,9}",";",tx),header=F,sep=";")

    V1     V2    V3     V4      V5     V6      V7
1 Date ON/OFF 93489 123985  219389   1324    2349
2 Date ON/OFF 34536  34566   12346 235346   32567
3 Date ON/OFF  6346    235 6547457   2345 4576782

这里有一个两步版本来处理不规则的 ; 分隔项的数量:

df<-read.table(text=tx,header=F,stringsAsFactors=F)    # read table with ;-sep chars as one col

x.list<-strsplit(df[,ncol(df)],";")                    # turn the last row into a list, split by ;
max.length<-max(sapply(x.list,length))                 # work out the max length

cbind(df[,1:ncol(df)-1],                               # bind the first columns
  t(                                                   # to the transposed matrix
    sapply(x.list,function(x){length(x)<-max.length    # of the list, with each element expanded
                              x})                      # to max.length items (NAs for missing)
  )
)

    V1     V2     1      2       3      4       5     6
1 Date ON/OFF 93489 123985  219389   1324    2349  <NA>
2 Date ON/OFF 34536  34566   12346 235346   32567  <NA>
3 Date ON/OFF  6346    235 6547457   2345 4576782 43455

关于在 R 中读取带有制表符和分号的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834224/

相关文章:

r - 找出所有可能的长度为 n 的子串

r - 向表中添加因子水平

r - 如何根据过滤条件添加计数列而不是在 dplyr 中分组?

读取 "next line delimited"的文本文件

在 R 中读取具有不同列宽但固定分隔符的文本文件

r - 如何让\bm{} 在 R markdown(到 HTML)文件中工作?

import - 忽略 typescript 上的 "cannot find module"错误

mysql导入具有巨大blob表字段的大文件

import - dart 导入和同一文件中的部分指令

r - 将大型数据集加载到 R 中的最快方法和最快格式是什么