Принудительное преобразование категории с нулевой частотой в гистограмму

У меня есть вектор наблюдений, и я хочу построить гистограмму в R.

Вектор содержит дискретные значения от 0 до 9. Нет никаких наблюдений для 6, однако, когда я рисую его, я хотел бы, чтобы 6 появилось на оси x без полосы над ним. Я не могу найти в Интернете инструкций, как это сделать.

Мой код на данный момент:

sick = c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,7,7,7,7,7,8,8,9)
ft = data.frame(table(sick))
colnames(ft) = c('Value','Freq')
ft$Perc = round(ft$Freq / sum(ft$Freq) * 100,1)
counts = table(sick)
bp = barplot(counts, main="Sick Leave Distribution", ylab = "Frequency", xlab = "Days of Sick Leave Taken" , ylim = c(0,10), cex.names = 1, col = "blue", names.arg=gsub("\\s","\n", unique(sick)))
text(x=bp, y=counts, labels=round(counts,0), pos=3, xpd=NA)

Код работает нормально, но я бы хотел, чтобы значение 6 было добавлено к оси x. Как это можно сделать в R?

0
0
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предоставление фактора табличной функции исправляет это. И вам также потребуется настроить name.arg.

sick = c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,7,7,7,7,7,8,8,9)
ft = data.frame(table(sick))
colnames(ft) = c('Value','Freq')
ft$Perc = round(ft$Freq / sum(ft$Freq) * 100,1)
counts = table(factor(sick,levels = c(0:9)))
bp = barplot(counts, main="Sick Leave Distribution", ylab = "Frequency", xlab = "Days of Sick Leave Taken" , ylim = c(0,10), cex.names = 1, col = "blue", names.arg=gsub("\\s","\n", c(0:9)))
text(x=bp, y=counts, labels=round(counts,0), pos=3, xpd=NA)

Другие вопросы по теме