# R/dsCHECK.R In dualScale: Dual Scaling Analysis of Multiple Choice Data

#### Documented in dsCHECK

```dsCHECK <-
NR=nrow(X) #number of respondents
N=ncol(X) #number of multipleChoice items
#
if(sum(is.na(X))>0){# there are NA values
cat('\n------------')
cat('\n------------\n')
cat('Beware, radical action has been taken!\n')
XF<-na.omit(X)
}
if(mode=="act"){ #active inputations
for(j in 1:N){
if(sum(is.na(X[,j]))>0){
maxOpt<-max(X[,j], na.rm=T)
for(i in 1:NR){
if(sum(is.na(X[i,j]))>0){
X[i,j]<-maxOpt+1
}}}}
XF<-X}}
#
#########
#
if(sum(is.na(X))==0){# there aren't NA values
X<-matrix(as.matrix(X),nrow=NR,ncol=N)
itemOp<-c(1:N)
for(j in 1:N)
{itemOp[j]<-max((X[,j]),na.rm=TRUE)}
max<-max(itemOp)
#
XF<-X
#
for(j in 1:N){
Xt<-tabulate(XF[,j])
cero<-Xt==0
control<-sum(as.numeric(cero))
#
if(control>0){ #if an option is missed
pos<-c(1:NR)
Xpos<-cbind(XF,pos)
Xord<-Xpos[order(Xpos[,j]),]
Table<-table(Xord[,j],useNA="ifany")
Up2<-length(Table) #included NA
TabNA<-table(Xord[,j])
UpNA<-length(TabNA) #Not included NA
ifelse((Up2>UpNA),NewOpt<-c(1:UpNA,NA),NewOpt<-c(1:Up2))
NewCode<-99
for(k in 1:Up2){
NewCode<-c(NewCode,array(NewOpt[k],Table[k]))}
NewCode<-c(NewCode[-1])
Xord[,j]<-NewCode
XF<-Xord[order(Xord[,(N+1)]),]
XF<-XF[,-(N+1)]}}}
#cat('\n------------')
#cat('\n Now, you can use the transformed data in \$TData as input for dsMC or dsFC analysis.\n')
#cat('------------\n')
dsCHECK.output<-list(InitialData=X,TData=as.data.frame(XF))
return(dsCHECK.output)}
```

## Try the dualScale package in your browser

Any scripts or data that you put into this service are public.

dualScale documentation built on May 29, 2017, 9:29 a.m.