Импорт файла с несколькими типами записей - PullRequest
0 голосов
/ 21 мая 2018

Как бы вы прочитали файл с несколькими типами записей (например, Заголовок и Детали) в кадр данных в R?

Например, данные выглядят как

HAAABBB
D12345
D23456
HCCCDDD
D67890

...

Я бы хотел создать такой фрейм данных:

v1  v2  v3 
AAA BBB 12345
AAA BBB 23456
CCC DDD 67890

Кажется неудобным читать строку и использовать округленное число для определения записи заголовка каждой детали.

Iраньше для открытия файлов такого типа использовалось программное обеспечение под названием Monarch, однако для больших файлов оно довольно медленное.

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете прочитать все строки в вашем файле в R и затем обработать их в соответствии с определенными правилами:

# read input file
rawtext <- readLines("FileName")

rawtext
# [1] "HAAABBB" "D12345"  "D23456"  "HCCCDDD" "D67890"

# get locations of headers and values
headers.loc <- which (startsWith(rawtext,"H"))
values.loc <- which (startsWith(rawtext,"D"))

# extract values
values <- substring(rawtext[values.loc],2)

# find locations of corresponding headers
hv <- sapply(values.loc,FUN=function(x){ max(which( x-headers.loc >0)) })

# create a dataframe
df <- data.frame(v1 = substring(rawtext[headers.loc[hv]], 2, 4), 
                 v2 = substring(rawtext[headers.loc[hv]], 5, 7), 
                 v3 = values)


df
#    v1  v2    v3
# 1 AAA BBB 12345
# 2 AAA BBB 23456
# 3 CCC DDD 67890
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...