R:如何按部分分隔外部文本数据

本文关键字:外部 文本 数据 分隔 何按部 | 更新日期: 2023-09-27 17:56:12

我有一个来自文本文件的数据集,它只有 2 列,但在数据中有多个分节符,我想将其放入单独的数组中,其中数组的名称是"Ran:"旁边的第二列中的文本。 下面是一个示例数据集:

ABCDEFG
Authored by test
Ran:    Efg$
Test:   num85
1       50
2       52
3       54
Ran:    pg2
Test:   num85
1       40
2       60
3       80
Ran:    #2
Test:   num85
1       14
2       15
3       16

我尝试使用strsplit函数,如下所示:

 header = readLines("C:/My Documents/DVH Test.txt", n=17)
 data = read.table("C:/My Documents/DVH Test.txt", skip=16,
col.names = c("bin", "value"))
 data.split = strsplit(data, "R")

不确定我是否使用了正确的方法。

任何建议将不胜感激。

提前谢谢。

好的,我已经试过了,但是我得到了一个空向量,并且元素不像你的那样排列:

 data = scan("C:/My Documents/DV.txt", what="raw")
 dat = readLines(textConnection(data))
 dat = dat[!grepl("Ran",dat)]
 dat.split = lapply(split(dat,cumsum(grepl("Test:",dat))),
     function(x)
         read.table(text=x,header=TRUE))

R:如何按部分分隔外部文本数据

例如,试试这个:

txt ='Ran:    Efg$
Test:   num85
1       50
2       52
3       54
Ran:    pg2
Test:   num85
1       40
2       60
3       80
Ran:    #2
Test:   num85
1       14
2       15
3       16'
## read all lines
ll <- readLines(textConnection(txt))
## remove "Ran"'s lines
ll <- ll[!grepl('Ran',ll)]
## split list in each headr an read it using 
## read.table(text=...)
lapply(split(ll,cumsum(grepl("Test:",ll))),
       function(x)
       read.table(text=x,header=TRUE))

它给出了这个数据帧列表:

$`1`
  Test. num85
1     1    50
2     2    52
3     3    54
$`2`
  Test. num85
1     1    40
2     2    60
3     3    80
$`3`
  Test. num85
1     1    14
2     2    15
3     3    16