首页 > 解决方案 > 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 == 1df$A_1 == 2. 我当然可以一件一件地做。但我正在寻找的是一种简单的方法来迭代 A 和 B 列。最好是一行代码。

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

标签: rmultiple-columns

解决方案


利用 -

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

推荐阅读