Как удалить неиспользуемые метки значений в выходных данных таблицы кросс-таблиц с помощью функции cro из пакета expss?

Я использую помеченные небесами фреймы данных (переменные уже имеют метки значений при импорте наборов данных). Мне нужно запустить множество перекрестных таблиц двух переменных. Я использую функцию cro из пакета expss, потому что по умолчанию отображает метки значений и вычисляет взвешенные кросс-таблицы.

Однако получаемые мной выходные таблицы отображают неиспользуемые метки значений. Как удалить неиспользуемые метки, не удаляя вручную неиспользуемые метки значений для каждой переменной? (кстати: функция fre из пакета expss по умолчанию имеет этот аргумент: drop_unused_labels = TRUE, а функция cro нет)

Вот воспроизводимый пример:

# Dataframe 
df <- data.frame(sex = c(1, 2, 99, 2, 1, 2, 2, 2, 1, 2),
                 agegroup= c(1, 2, 99, 2, 3, 3, 2, 2, 2, 1),
                 weight = c(100, 20, 400, 300, 50, 50, 80, 250, 100, 100))
library(expss)

# Variable labels
var_lab(df$sex) <-"Sex"
var_lab(df$agegroup) <-"Age group"

# Value labels 
val_lab(df$sex) <- make_labels("1 Male 
                               2 Female
                               97 Didn't know
                               98 Didn't respond
                               99 Abandoned survey")

val_lab(df$agegroup) <- make_labels("1 1-29
                                        2 30-49
                                        3 50 and more
                                       97 Didn't know
                                       98 Didn't respond
                                       99 Abandoned survey")

cro(df$sex, df$agegroup, weight = df$weight)

 |     |                  | Age group |       |             |             |                |                  |
 |     |                  |      1-29 | 30-49 | 50 and more | Didn't know | Didn't respond | Abandoned survey |
 | --- | ---------------- | --------- | ----- | ----------- | ----------- | -------------- | ---------------- |
 | Sex |             Male |       100 |   100 |          50 |             |                |                  |
 |     |           Female |       100 |   650 |          50 |             |                |                  |
 |     |      Didn't know |           |       |             |             |                |                  |
 |     |   Didn't respond |           |       |             |             |                |                  |
 |     | Abandoned survey |           |       |             |             |                |              400 |
 |     |     #Total cases |         2 |     5 |           2 |             |                |                1 |

Я хочу избавиться от столбцов и строк с именами ‘Didn't know’ и ‘Didn't respond’.


person Carlos Hernández    schedule 23.09.2020    source источник


Ответы (1)


Вы можете использовать функцию drop_unused_labels, чтобы удалить неиспользуемые ярлыки.

library(expss)
df1 <- drop_unused_labels(df)
cro(df1$sex, df1$agegroup, weight = df1$weight)
                                                                           
 |     |                  | Age group |       |             |                  |
 |     |                  |      1-29 | 30-49 | 50 and more | Abandoned survey |
 | --- | ---------------- | --------- | ----- | ----------- | ---------------- |
 | Sex |             Male |       100 |   100 |          50 |                  |
 |     |           Female |       100 |   650 |          50 |                  |
 |     | Abandoned survey |           |       |             |              400 |
 |     |     #Total cases |         2 |     5 |           2 |                1 |
person Ronak Shah    schedule 23.09.2020