У меня есть две факторные переменные, которые я хочу поместить в таблицу / кросс-таблицу, чтобы получить частоты по категориям. Я хочу выразить эти частоты в процентах от столбца, то есть рассчитать только на счетчиках для каждого столбца (каждый столбец должен иметь общее значение 100%).
Всякий раз, когда я выполняю свой сценарий с prop.table(tab1, 2)
, R возвращает то, что представляется процентами столбцов, где каждая категория представляет собой долю всей выборки, а не только частоты столбцов (я также должен отметить, что данные взвешены, хотя я может повторить проблему без весов).
Я мучительно искал решение, и пока ничего не получалось. Я пытался преобразовать таблицу в матрицу и фрейм данных, но это не помогло. Я пробовал разные пакеты, xtabs()
и другие функции, чтобы теперь воспользоваться.
Вот соответствующий код:
# Raw data import | will make copy for editing.
rawdata = read.csv(file.choose(), header = TRUE)
data = rawdata
# Install Rcmdr for wtd.table() function
install.packages("Rcmdr")
library(Rcmdr)
# Create table
tab1 <- wtd.table(data$occ, data$degree, weights = data$PERWT)
tab1
prop.table(tab1, 2)
prop.table(tab1, 2)*100
Для взвешенного подсчета таблица не создает проблем (для фактических данных существует 15 категорий степеней и 26 категорий заданий):
Deg1 Deg2 Deg3 Deg4 Deg5
Job1 1000 1000 1000 1000 1000
Job2 2000 2000 2000 2000 2000
Job3 3000 3000 3000 3000 3000
Job4 4000 4000 4000 4000 4000
Job5 5000 5000 5000 5000 5000
Когда я запускаю prop.table(tab1, 2)
, я ожидаю что-то вроде этого:
Deg1 Deg2 Deg3 Deg4 Deg5
Job1 0.07 0.07 0.07 0.07 0.07
Job2 0.13 0.13 0.13 0.13 0.13
Job3 0.20 0.20 0.20 0.20 0.20
Job4 0.27 0.27 0.27 0.27 0.27
Job5 0.33 0.33 0.33 0.33 0.33
Однако на самом деле я получаю причудливые числа, которые, по-видимому, основаны на всей выборке, а не только на столбце, например ::1010 *
Deg1
Job1 5.088906e-03
Job2 1.94034e-02
Job3 6.236119e-03
Job4 4.495131e-02
Job5 1.315560e-01
Этот шаблон повторяется во всех 15 степенях и во всех 26 категориях заданий. Запуск prop.table(tab1, 2)*100
не имеет никакого эффекта: значения остаются одинаковыми, не зависит от умножения.
Я очень сильно растерялся, и, будучи новым пользователем R, я уверен, что совершаю какую-то легкую ошибку. Любая помощь с благодарностью.