Создайте таблицу подсчета при определенных условиях

0

Вопрос

У меня есть набор двоичных переменных (со значениями 0 и 1), и я хочу создать двустороннюю таблицу подсчета, которая суммирует количество совпадений пар переменных (т. Е. Обе они имеют значение 1). Вот пример набора данных:

mm <- matrix(0, 5, 6)
m <- 2
n <- 2
df <- data.frame(apply(mm, c(1,2), function(x) sample(c(0,1),1)))
colnames(df) <- c("Horror", "Thriller", "Comedy", "Romantic", "Sci.fi", "gender")

В конце концов, я хотел бы иметь таблицу, в которой учитывается повторяемость ужасов(=1) и пола(=1), Триллера(=1) и пола(=1), Комедии(=1) и пола(=1), Романтики(=1) и пола(=1), а также sci.fi(=1) и пол(=1).

1

Лучший ответ

3

Что-то вроде этого?

library(dplyr)
df %>% 
  mutate(across(-gender, ~ifelse(.==1 & gender ==1, 1, 0), .names = "{col}_gender1" )) %>% 
  summarise(across(ends_with("gender1"), sum))
  Horror_gender1 Thriller_gender1 Comedy_gender1 Romantic_gender1 Sci.fi_gender1
1              1                3              2                1              0
2021-11-23 19:15:28

Спасибо. Это именно то, что я искал. Я бы добавил t() в конце, чтобы сделать его вертикальным
cliu

Последующий вопрос. Вы знаете, как также добавить еще один столбец, в котором все остальные переменные будут иметь значение 1 и пол = 0? Предпочтительно в одном и том же куске dplyr код
cliu

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................