我正在尝试解析制表符分隔的数据,该数据已保存为包含无关数据的文本文件。我希望这是一个R data.table / data.frame。
制表符分隔格式如下:
A 1092 - 1093 + 1X
B 1093 HRDCPMRFYT
A 1093 + 1094 - 1X
B 1094 BSZSDFJRVF
A 1094 + 1095 + 1X
B 1095 SSTFCLEPVV
...
只有两种类型的行,A和B.一直有5列,例如第一行,
1092 - 1093 + 1X
B始终有两列:
1093 HRDCPMRFYT
问题:如何使用不同格式的“交替”行解析文件?
假设这是一个文本文件,只有这种格式,交替的A和B行,分别有5列和2列。你如何将其解析为R data.table?我的想法是如何创建以下格式:
1092 - 1093 + 1X 1093 HRDCPMRFYT
1093 + 1094 - 1X 1094 BSZSDFJRVF
1094 + 1095 + 1X 1095 SSTFCLEPVV
...
答案 0 :(得分:4)
一种方法是使用readLines
读取数据,拉出所需的位,然后传递给read.table
以形成数据帧。因此,如果行是交替的,那么:
txt <-
'1092 - 1093 + 1X
1093 HRDCPMRFYT
1093 + 1094 - 1X
1094 BSZSDFJRVF
1094 + 1095 + 1X
1095 SSTFCLEPVV'
rd <- readLines(textConnection(txt))
data.frame(read.table(text=rd[c(TRUE, FALSE)]),
read.table(text=rd[c(FALSE, TRUE)]))
将textConnection(txt)
更改为您的文件路径
另一种方法是只读入一次然后再处理
r <- read.table(text=txt, fill=TRUE, stringsAsFactors=FALSE, na.strings = "")
d <- cbind(r[c(TRUE, FALSE),], r[c(FALSE, TRUE),])
d[ colSums(is.na(d)) < nrow(d)]