27 сент. 2011 г.

Преобразование таблицы в массив для логлинейного анализа

Описанная в предыдущем материале команда loglm() работает со специфической формой исходных данных — массивом (на языке R — array), отличающимся от обычной таблицы. Задача преобразовать обычную таблицу (на языке R — data.frame) в array оказалась не вполне тривиальной.

1) импортируем таблицу в R так, чтобы стоящие в ней NA были значимой категорией:

> lxx=read.csv('путь к файлу',header=T,na.strings=' ')


2) делаем, как указано в http://r-statistics.livejournal.com/5467.html, но с соответствующими смысловыми заменами:

> names <- list(age=c('15-19','20-29','30-39','40-49','50.and.older','NA'), family.status.legal=c('single','married','divorsed','NA'), family.status.actual=c('alone','parent','with.man','with.woman','NA'), clubA=c(0,1,'NA'), partiesA=c(0,1,'NA'), cruisingA=c(0,1,'NA'), internet=c(0,1,'NA'), newspaper=c(0,1,'NA'), teletext=c(0,1,'NA'), on.street=c(0,1,'NA'))


Таким образом, вначале мы создаём сам массив, в котором указываем все переменные и те значения, которые эти переменные могут принимать. Далее нужно, собственно, импортировать в созданный массив имеющиеся у нас в таблице данные:

> lx=array(c(age=lxx$age,
family.status.legal=lxx$family.status.legal,
family.status.actual=lxx$family.status.actual,
clubA=lxx$clubA,
partiesA=lxx$partiesA,
cruisingA=lxx$cruisingA,
internet=lxx$internet,
newspaper=lxx$newspaper,
teletext=lxx$teletext,
on.street=lxx$on.street),dim=c(6,4,5,3,3,3,3,3,3,3),dimnames=names)

Комментариев нет: