Как прочитать сложный двоичный файл с R, как я делаю в SAS? - PullRequest
0 голосов
/ 23 марта 2020

Я несколько дней пытался читать двоичные файлы с R, но безуспешно. Для этого я научился использовать readBin () для простых двоичных файлов, но я не могу воспроизвести эти примеры на своих собственных файлах, которые являются более сложными (читать для меня).

Однако это файлы, которые я могу читать с помощью SAS, но я не могу провести параллель с R ...

С R, вот простой сценарий, который я могу воспроизвести:

to.read <- file("bin_mtcars.dat", "rb")
bin.data <- readBin(to.read, integer(), n = 33)
close(to.read)
cyl.data <- bin.data[4:13]
...
final.data <-  cbind(cyl.data, am.data, gear.data)

Но структура файла, который мне нужно прочитать, сложнее.

Вот как мне удается прочитать его с помощью SAS:

filename nv2 '...'      ;

data toto ;
infile nv2 lrecl=117 pad missover recfm=f;
input
periode pib1.
detail_circuits pib1.
detail_surfaces pib1.
ens_nbmoyen pib1.
enseignesflash_l76g pib1.
enseignes_l76m pib1.
groupes_z73b pib1.
enseignes_drive pib1.
enseignes_d003 pib1.
circuits_d002 pib1.
enseignes_l77p pib1.
circ_generalist_n1 pib1.
circ_on_line_n2 pib1.
circ_surfaces_n3 pib1.
circ_magasins_n4 pib1.
circ_detail_surf_n5 pib1.
circ_detail_mag_n6 pib1.
circ_specialise_n7 pib1.
circ_detail_spe_n8 pib1.
data_trans_f pib1.
bar_sc_recettespv pib1.
bar_sc_couleur pib1.
bar_sc_compo pib1.
bar_sc_format pib1.
bar_sc_marques pib1.
panz_sauceschaudes pib1.
panz_sce_marques pib1.
panz_sce_conditionne pib1.
listesegmentsmdd pib1.
totalmdd pib1.
bioetvert_transv pib1.
detailnomenseignes pib2.
dtwa pib4.
ean1 pib4.
ean2 pib4.
ean1str pib4.
ean2str pib4.
ean3str pib4.
barcode_owner pib4.
usi pib4.
npwa pib4.
semaine pib4.
shop pib4.
qa float4.
sd float4.
mtwp float4.
rwha float4.
gros_achat float4.
qahg_375 float4.
lien pib8.
sonid pib8.
;
run;

Как видите, у меня много переменных с разными форматы.

У меня есть доступ к описательному файлу, чтобы знать все это. Но я не знаю, как управлять этим с помощью readBin () ...

Я даже не могу прочитать первое значение в моем файле ... Это не возвращает мне правильное значение:

bin.info <- file.info("...")
to.read <- file("...", "rb")
bin.data <- readBin(to.read, integer(), n = bin.info$size, size = 1)

Даже с n=1 ...

Так что любая помощь будет очень признательна.

Спасибо.

Симон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...