Одна dplyr
и tidyr
возможность может быть:
df %>%
gather(var, val) %>%
count(var, val) %>%
spread(var, n, fill = 0)
val Category.x Category.y
<chr> <dbl> <dbl>
1 Better 2 2
2 Similar 1 2
3 Worse 1 0
Во-первых, он преобразует данные из широкоформатного формата в длинный, причем столбец «var» содержит имена переменных, а столбец «val» - соответствующие значения. Во-вторых, он рассчитывает на «var» и «val». Наконец, он распространяет данные в желаемый формат.
Или с dplyr
и reshape2
вы можете сделать:
df %>%
mutate(rowid = row_number()) %>%
melt(., id.vars = "rowid") %>%
count(variable, value) %>%
dcast(value ~ variable, value.var = "n", fill = 0)
value Category.x Category.y
1 Better 2 2
2 Similar 1 2
3 Worse 1 0