2
так что это простой вопрос, и мне непонятно, что происходит с этим вызовом plyr.prop.table в вызове ddply
library(plyr)
некоторые глупые данные с биномиальным исходом (y1
) и двух факторов, классифицирующих четыре уровня (x1
и x2
):
df <- data.frame(x1 = sample(letters[1:4], 4000,T),
x2 = sample(LETTERS[5:8], 4000,T),
y1 = rbinom(n=4000,1,.5))
Я хочу таблицу с рядами пропорций каждого outcome-- и я думал, что следующий будет работать
foo <- ddply(df, .(x1,x2), function(i) prop.table(table(i$y1),1))
, но вместо этого он дает мне:
head(foo)
x1 x2 0 1
1 a E 1 1
2 a F 1 1
3 a G 1 1
4 a H 1 1
5 b E 1 1
6 b F 1 1
, который явно не является тем, что я ищу. Каково мое упущение?
@tomw +1 Я считаю, что это происходит, что выход из 'table' одномерно, а при указании маржу в' prop.table' вы вынуждаете R рассматривать эту одномерную таблицу как 2D-таблицу. – joran
Если вам нужны данные в «длинном» формате 'ddply (df,. (X1, x2), суммировать, prop = prop.table (таблица (y1)), id = names (table (y1)))' – mnel
ok ... Я пытаюсь ответить на этот вопрос. Во всяком случае, это именно то, что я искал. – tomw