Я работаю с набором данных UCLA
> read <- read.table("http://www.ats.ucla.edu/stat/mult_pkg/faq/general/sample.csv",
header=TRUE, sep=",", quote="\"")
> head(read)
female read write math hon femalexmath
1 0 57 52 41 0 0
2 1 68 59 53 0 53
3 0 44 33 54 0 0
4 0 63 44 47 0 0
и я хочу crosstab
переменные hon
с female
Желаемый результат выглядит следующим образом: stata
:
| female
hon | male female | Total
-----------+----------------------+----------
0 | 74 77 | 151
1 | 17 32 | 49
-----------+----------------------+----------
Total | 91 109 | 200
Используя R
, я пытался использовать xtabs
> xtabs(female~hon, data = read)
hon
0 1
77 32
и reshape2
> library(reshape2)
> melt <- melt(read, id="female")
> dcast(melt, variable ~ female, sum, subset = .(variable == "hon"))
hon
0 1
77 32
и table
> table(read$hon, read$female)
0 1
0 74 77
1 17 32
но это только часть желаемого результата
Я хотел бы включить значения non-female
(=male
) и рассчитать общее количество, а также соответствующим образом присвоить имена.
Мне не хватает простой функции для этого в R
?
Я видел этот пост Имитация команды tabulate из Stata в R, но поскольку код в этом вопросе не содержал библиотеки gmodels
для CrossTable
, я не мог ее применить. Вывод тоже выглядит иначе.
addmargins(table(read$hon, read$female, dnn = c("Hon", "Female")))
- person r.bot   schedule 31.03.2015gmodels
. мой пост кажется дубликатом тогда - person rmuc8   schedule 31.03.2015