Преобразование двух категориальных переменных в сводные данные о пропорциях
В R,
Какой самый эффективный способ перейти от:
gender soda
1 f y
2 f y
3 f n
4 m n
5 f y
6 m n
7 m n
8 f y
9 m y
10 m n
в
y n
m 0.2 0.8
f 0.8 0.2
Я использую следующую команду:
> tmp<-ddply(subdata,.(gender), summarise, y=length(soda[soda=="y"])/length(soda),n=length(soda[soda=="n"])/length(soda))
> rownames(tmp)<-tmp$gender
> tmp$gender<-NULL
> tmp
y n
f 0.8 0.2
m 0.2 0.8
Но я чувствую, что должно быть более идиоматическое выражение, о котором я не знаю. Есть?
1 ответ
Решение
Ты можешь использовать table
а также prop.table
:
> prop.table(table(subdata), 2)
soda
gender n y
f 0.2 0.8
m 0.8 0.2
Функция table
считает значения за комбинацию. prop.table
вычисляет относительные частоты вдоль второго поля (т.е. 2
: столбцы).