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_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
推荐阅读
- centos - CentOS 7 - 正确添加本地包到 yum 仓库
- c# - 从 DateTime.Now.Date 中删除尾随零
- powershell - Sitecore Powershell 报告不返回任何结果
- javascript - 如何让角度前端等待快速 REST-Call 响应
- laravel - 在 Laravel Schedule Job 中使用配置文件
- android - osmdroid 的 mapbox 磁贴中无法识别字体
- dart - 从 Dart 中的另一个未来“值”创建一个未来
- javascript - C# 没有从 Ajax 获取数据
- ffmpeg - 无法使用 FFmpeg 修复具有动态分辨率的 WebM 视频的时间戳
- css - 禁用 align=center on @media