Я пытаюсь обобщить данные обследования домашних хозяйств, и поэтому большинство моих данных являются категориальными (факторными) данными. Я хотел обобщить это с помощью графиков частот ответов на определенные вопросы (например, гистограммы процентов домохозяйств, ответивших на определенные вопросы, с полосами ошибок, показывающими доверительные интервалы). Я нашел этот отличный учебник, который, как я думал, был ответом на мои молитвы (http://www.cookbook-r.com/Manipulating_data/Summarizing_data/), но оказывается, что это поможет только с непрерывными данными.
Что мне нужно, так это что-то подобное, что позволит мне рассчитать пропорции подсчетов и стандартные ошибки / доверительные интервалы этих пропорций.
По сути, я хочу иметь возможность создавать сводные таблицы, которые выглядят следующим образом для каждого из вопросов, заданных в моих данных опроса:
# X5employf X5employff N(count) proportion SE of prop. ci of prop
# 1 1 20 0.64516129 ? ?
# 1 2 1 0.03225806 ? ?
# 1 3 9 0.29032258 ? ?
# 1 NA 1 0.290322581 ? ?
# 2 4 1 0.1 ? ?
structure(list(X5employf = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("1", "2", "3"), class = "factor"), X5employff = structure(c(1L, 2L, 3L, NA, 4L, 5L, 6L, 7L, 8L, 4L, 5L, 6L, 7L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8"), class = "factor"), count = c(20L, 1L, 9L, 1L, 1L, 5L, 2L, 1L, 1L, 4L, 5L, 4L, 1L)), .Names = c("X5employf", "X5employff", "count"), row.names = c(NA, -13L), class = "data.frame")
Затем я хотел бы построить гистограммы в ggplot (или аналогичном), используя эти сводные данные с полосами ошибок, показывающими доверительные интервалы.
Я подумал о том, чтобы внести поправки в код, приведенный в приведенном выше руководстве, чтобы вычислить столбцы выше, хотя, будучи относительным новичком в R, я немного борюсь! Я экспериментировал с пакетом ggply, но не очень хорошо разбирался в синтаксисе, поэтому мне удалось добраться до этого с помощью следующего кода:
> X5employ_props <- ddply(X5employ_counts, .(X5employf), transform, prop=count/sum(count))
Но в итоге я получаю следующее:
X5employf X5employff count prop
1 1 1 20 1.0000000
2 1 2 1 1.0000000
3 1 3 9 1.0000000
4 2 4 1 0.2000000
5 3 4 4 0.8000000
6 2 5 5 0.5000000
7 3 5 5 0.5000000
8 2 6 2 0.3333333
9 3 6 4 0.6666667
10 2 7 1 0.5000000
11 3 7 1 0.5000000
12 2 8 1 1.0000000
13 1 <NA> 1 1.0000000
При всех моих пропорциях 1, предположительно потому, что они вычисляются по строкам, а не столбцам
Я задавался вопросом, может ли кто-нибудь помочь или знает о пакетах / коде, которые сделают эту работу за меня!
stat = "identity"
, см. docs.ggplot2.org/current/geom_bar.html для получения дополнительной информации. Чтобы получить лучший ответ, я предлагаю вам предоставить нам воспроизводимые данные. - person Roman Luštrik   schedule 23.07.20131 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
factor11 3 1 1 1 3 1 1 1 3 1 1 1 2 2 3 3 3 1 2 2 2 2 2 1 1 1 3 3 3 3 3 3 2 1 1 3 1 3 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
factor21 4 <NA> 1 2 4 3 1 1 6 1 1 1 5 5 6 7 5 1 6 6 7 5 4 1 3 1 6 5 5 5 6 4 5 3 3 5 1 4 5 1 1 1 1 1 3 3 3 1 3 1 1 1 3 8
- person marty_c   schedule 23.07.2013structure(list(X5employf = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("1", "2", "3"), class = "factor"), X5employff = structure(c(1L, 2L, 3L, NA, 4L, 5L, 6L, 7L, 8L, 4L, 5L, 6L, 7L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8"), class = "factor"), count = c(20L, 1L, 9L, 1L, 1L, 5L, 2L, 1L, 1L, 4L, 5L, 4L, 1L)), .Names = c("X5employf", "X5employff", "count"), row.names = c(NA, -13L), class = "data.frame")
- person marty_c   schedule 23.07.2013binom.exact
изepitools
, я использовалbsum <- ddply(bb,.(ttt),function(x) { n <- nrow(x) b <- binom.exact(sum(x$predation),n=n)[,c("n","proportion","lower","upper")] as.data.frame(rename(b,c(proportion="Mean",lower="Lower",upper="Upper"))) })
раньше ... - person Ben Bolker   schedule 25.07.2013