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))
例如,试试这个:
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