В пакете опроса для R, как я могу заставить ‘svytotal’ выдавать мне только «истинные» значения переменной в выходных данных?

#r #dplyr #survey

Вопрос:

Фон:

Я работаю над большим опросом и использую потрясающий survey пакет, R чтобы собрать цифры.

Скажем, я хочу оценить взвешенную общую численность населения в разбивке по переменной пола, SEX . (Переменная закодирована 1 == MALE и 2 == FEMALE .) Вот код, который я использую, чтобы (успешно) получить эти цифры:

 svytotal(~I(SEX == 1)   
         ~I(SEX == 2) ,     
         design = mydesign)
 

Проблема:

«Проблема» — сильное слово для этого, но результат, который я получаю, неизменно дает мне строку для SEX == 1 == TRUE и SEX == 1 == FALSE — и то же самое для SEX == 2 . Вывод выглядит примерно так:

                                     total   se
I(SEX == 1)FALSE                    30903 1106
I(SEX == 1)TRUE                     32774 1059
I(SEX == 2)FALSE                    32774 1059
I(SEX == 2)TRUE                     30903 1106
 

Как я уже сказал, это не конец света. Но так как я хочу легко передать это в фрейм данных и экспортировать csv для включения непосредственно в него LaTeX , я бы хотел иметь возможность сортировать форматирование, показывая мне только «TRUE», чтобы я получил что-то вроде этого:

                                     total   se
I(SEX == 1)TRUE                     32774 1059
I(SEX == 2)TRUE                     30903 1106
 

Есть ли способ сделать это внутри Survey , или мне придется обрезать вещи, возможно, dplyr после того, как я сделаю это фреймом данных?

Я пытался просто попросить SEX (хех), вот так:

 svytotal(~SEX,     
         design = mydesign)
 

Но это дает только общую сумму по обоим 1 и 2 .

Спасибо!

PS — Я получил префикс «Я» из книги Ламли (автора survey ) на упаковке, но я не знаю, что он делает. Извините за невежество, если в этом нет необходимости.

Комментарии:

1. Ваш код не воспроизводим, но я думаю, что да, вы сможете достичь желаемого после преобразования выходных данных в фрейм данных.

2. ~as.numeric(SEX==1) as.numeric(SEX==2) ?