【问题标题】:Create count table under specific condition在特定条件下创建计数表
【发布时间】:2022-01-02 05:59:36
【问题描述】:

我有一组二进制变量(值为 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)、科幻(=1) 和性别(=1)。

【问题讨论】:

  • 性别总是1?如果性别始终为 1,那么您只需对每列的出现次数 (=1) 求和。
  • Gender 可以为 0。可能是我在示例中不小心为性别生成了所有 1

标签: r data-structures data-manipulation crosstab two-way-binding


【解决方案1】:

这样的?

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

【讨论】:

  • 谢谢。这正是我一直在寻找的。我会在末尾添加 t() 以使其垂直
  • 一个后续问题。您是否知道如何添加另一列来计算值为 1 且性别 = 0 的所有其他变量?最好在dplyr 代码的同一块中
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2021-12-28
  • 2012-06-28
  • 2018-05-27
  • 2018-01-05
  • 2018-10-02
  • 2021-10-12
相关资源
最近更新 更多