我有一个可能非常简单的问题,但我的大脑找不到一个简单的解决方案。我有调查数据,由几个多个响应集组成。看起来像这样:
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_1
和df$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