r语言 - 2 个多个响应集之间的频率



我有一个可能非常简单的问题,但我的大脑找不到一个简单的解决方案。我有调查数据,由几个多个响应集组成。看起来像这样:

df <- data.frame(A_1 = c(1, NA, 1, NA),
                 A_2 = c(1, 1, NA, NA),
                 B_1 = c(1, 1, 1, NA),
                 B_2 = c(NA, 1, 1, NA))

现在我想知道df$B_1df$B_2是如何为df$A_1 == 1分配的,同样地为df$A_1 == 2。 我当然可以一一做。但我正在寻找一种迭代 A 和 B 列的简单方法。充其量在一行代码中。

#Output:
# A_1 B_1 1
#     B_2 0.5
# A_2 B_1 1
#     B_2 0.5

使用 -

df <- data.frame(A_1 = c(1, NA, 1, NA),
                 A_2 = c(1, 1, NA, NA),
                 B_1 = c(1, 1, 1, NA),
                 B_2 = c(NA, 1, 1, NA))
library(dplyr)
df %>% 
  group_by(A_1) %>%
  summarise_each(funs(sum(!is.na(.))))

输出

# A tibble: 2 x 4
    A_1   A_2   B_1   B_2
  <dbl> <int> <int> <int>
1     1     1     2     1
2    NA     1     1     1

最新更新