Вычислить вероятность для двух дискретных переменных в 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
Другие вопросы по тегам