Могу ли я использовать prop.table (table (data $ variable)), чтобы получить проценты в R? - PullRequest
0 голосов
/ 24 мая 2019

Я где-то читал, что могу использовать prop.table (table ()) в R, чтобы получить таблицу пропорций.Однако результаты, которые я получаю для этого, несколько отличаются от моих ручных вычислений (т. Е. Просмотра таблицы () и последующего деления на NROW ().) Я уверен, что возможно, что я допустил ручные ошибки в своих вычислениях, но я хотелубедитесь, что не было чего-то логически неправильного в использовании prop.table (table ()).

Я работаю с данными опроса с разбивкой по полу, которые я разбил на два отдельных набора данных для каждого пола (т. Е. Женщины <- data [data $ пол == 1]. Я пытаюсь определить полразличия, поэтому я хочу увидеть процентную разбивку ответов и сравнить их. </p>

scoreWomen <- c('a', 'a', 'a', 'b', 'c', 'c', 'd', 'd', 'd', 'd', 'd', 'e', 'e')
scoreMen <- c('a', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd', 'd', 'e')
prop.table(table(scoreWomen))

#a          b          c          d          e 
#0.23076923 0.07692308 0.15384615 0.38461538 0.15384615 

table(scoreWomen)
#a b c d e 
#3 1 2 5 2 
NROW(scoreWomen)
#13

В мелкомасштабных тестах, как и в приведенном выше коде, результаты одинаковы для ручного расчета против prop.table (таблица ()). ОДНАКО, когда я использую их с моими фактическими данными, они сильно отличаются и меняются на несколько процентов. Почему это так? Есть ли что-то в prop.table () или, альтернативно, в NROW (), что я 'м недоразумение?

1 Ответ

0 голосов
/ 24 мая 2019

Существует вероятность разницы значений, если в наборе данных есть NA элементов

scoreWomen <- c(scoreWomen, NA)
prop.table(table(scoreWomen))
#scoreWomen
#         a          b          c          d          e 
#0.23076923 0.07692308 0.15384615 0.38461538 0.15384615 

table(scoreWomen)/NROW(scoreWomen)
#scoreWomen
#         a          b          c          d          e 
#0.21428571 0.07142857 0.14285714 0.35714286 0.14285714 

Но это можно предотвратить, указав useNA = 'always' в table

prop.table(table(scoreWomen, useNA = 'always'))
#scoreWomen
#        a          b          c          d          e       <NA> 
#0.21428571 0.07142857 0.14285714 0.35714286 0.14285714 0.07142857 

Теперь оно совпадает с вычисленным значением с помощью NROW, а затем удаляет элемент <NA> из таблицы *

Таким образом, все зависит от того, нужно ли выполнять расчет, удалив элементы NA или нет. NROW не различает появление NA

...