**R Snippets for IRT**, and kindly contributed to R-bloggers)

This function helps prepare data for analysis with models that require polytomous items to be coded from 0 to N without missing categories, such as the Partial Credit Model (Masters, 1982).

When there are no missing categories, an item that was supposed to be scored from 1 to 5 can be readily converted to 0 to N by subtracting 1 from the vector of responses. However, a problem arises when the respondents have selected only some of its categories. So, instead of having a responses at 1, 2, 3, 4, and 5, respondents only selected 1, 3, and 4. In this case, the response vector needs to be recoded to become 0, 1, and 2.

### The function

This function automatically recodes a response vector and can be applied to an entire response data frame using *apply* to make this conversion quickly (see the example).

The function takes only one parameter, the response vector that needs to be recoded.

### The code:

```
recPoly <- function ( responseVector ){
flevels <- sort( unique( as.vector( responseVector ) ) )
flevels <- flevels[ !is.na( flevels ) ]
ncat <- length(flevels)
temp01 <- factor( responseVector, levels = flevels, labels = c( seq( 1:ncat ) ) )
output <- as.numeric( as.character( temp01 ) ) - 1
return( output )
}
```

### Example

Just to illustrate that the functions returns the recoded values for the response vector:

```
sample1 <- c(1,2,3,4,5,6)
recPoly(sample1)
sample2 <- c(3,2,1,6,5,4)
recPoly(sample2)
```

And to show how it can be applied to an entire matrix:

```
sample3 <- matrix( c( 5,3,4,1,2,3,4,4,1,5,1,5,1,2,3,4), ncol = 4)
apply(sample3, 2, recPoly)
```

**leave a comment**for the author, please follow the link and comment on their blog:

**R Snippets for IRT**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...