Вычислить вероятность для двух дискретных переменных в R
Итак, у меня есть что-то вроде:
V1 V2
X B
Y A
X A
Y B
X B
X B
И мне нужно:
A B
X 0.17 0.5
Y 0.17 0.17
* Примечание: они не суммируют до 1, потому что я округляю 1.666
в 1.7.*
2 ответа
Решение
Использовать table
Функция для создания таблиц счетов:
> table(df)
V2
V1 A B
X 1 3
Y 1 1
Таблица вероятностей получена из этого прямым способом:
> table(df) / nrow(df)
V2
V1 A B
X 0.1666667 0.5000000
Y 0.1666667 0.1666667
Или, альтернативно, используя prop.table
:
> prop.table(table(df))
V2
V1 A B
X 0.1666667 0.5000000
Y 0.1666667 0.1666667
По-другому:
table(df)/nrow(df)
# V2
# V1 A B
# X 0.1666667 0.5000000
# Y 0.1666667 0.1666667