Error in likert: All items (columns) must have the same number of levels in R

Viewed 1894

My data:

        Q5         Q6          Q7
1   Not Agree   Neutral     Not Agree
2   Not Agree   Neutral     Neutral
3   Not Agree   Agree       Agree
4   Not Agree   Agree       Neutral
5   Neutral     Not Agree   Neutral
6   Not Agree   Agree       Neutral
7   Not Agree   Neutral     Neutral
8   Neutral     Agree       Neutral
9   Agree       Neutral     Not Agree
10  Neutral     Agree       Neutral
Q567[1:3] <- lapply(Q567[1:3], factor, levels= c("Agree", "Neutral", "Not Agree"), ordered = TRUE)

likert(Q567) %>%
  plot(type = "bar")

What my data looks like
What my data looks like

I converted them into factor with levels, why I still get the error

Error in likert(Q567) : All items (columns) must have the same number of levels
2 Answers

I've had the same problem, and found that the set I was working with was a tibble, rather than a data.frame:

data <- as.data.frame(data) 

fixed it for me.

You have only recoded the first three columns of your dataframe to be factors, but you pass the entire dataframe to likert. The likert function expects the variables in Q567 to be factors. So I believe you have additional columns in the dataframe that are not, which is causing your error.

You should do something like:

likert(Q567[,1:3]) %>% 
  plot(type = 'bar')
Related