Таблицы сопряженности для всех столбцов в кадре данных - PullRequest
2 голосов
/ 10 апреля 2020

У меня есть фрейм данных с двоичными данными (все факторы) со следующей структурой:

Данные:

convert tv radio print
0       1  1     0
1       0  1     1
0       0  0     0
1       0  0     1 

Вопрос:

Я хочу, чтобы доля преобразования == 1 в процентах приходилась на каждый столбец кадра данных, поэтому представьте, что есть 100 строк, в 40 случаях, когда преобразование == '1', тогда пропорция отображается в виде строк. (# tv == 1 / # convert == 1) = 0,98 и (# tv == 0 / # convert == 1) = 0,02

Ожидаемый результат:

value tv   radio print
0     0.02 0.42  0.70
1     0.98 0.58  0.30

Подход пока:

Я использую prop.table внутри a для l oop, но это не так элегантно, как я думаю, возможно

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Один подход: применить table() к столбцам, а затем разделить на количество записей.

# making some junk data

df <- data.frame(
  convert = rbinom(100, 1, 0.4), 
  tv = rbinom(100, 1, 0.3),
  radio = rbinom(100, 1, 0.2),
  print = rbinom(100, 1, 0.4)
)

apply(df[df$convert == 1, -1], 2, table) / sum(df$convert == 1)

Условие столбца -1 - удалить первый столбец (тривиальный столбец convert). ) из таблицы.

1 голос
/ 10 апреля 2020

Мы также можем использовать tidyverse

library(dplyr)
library(purrr)
df %>% 
   filter(convert == 1) %>%  
   select(-1) %>% 
   map_dfc(~ table(.)/length(.))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...