r - r 基于唯一 id 的字符变量的子集
问题描述
我正在尝试根据“类别”变量对数据进行子集化。更具体地说,该类别有两个级别:a 和 b。示例数据如下所示:
id <- c(1,2,2,2,1,1,2,2,1,2)
category <- c("a", "b", "a", "a", "b", "a","a", "b","a","a")
data <- data.frame("id"=id, "category"=category)
> data
id category
1 1 a
2 2 b
3 2 a
4 2 a
5 1 b
6 1 a
7 2 a
8 2 b
9 1 a
10 2 a
我想获得在类别变量中只有超过 3 个 a 或 b 计数的 id 。我先看表数,表可能如下所示:(这部分不一定打印)
a b
1 3 1
2 4 2
然后选择与我的标准匹配的 id 。
a b
2 4 2
提前致谢!
解决方案
一种dplyr
可能是:
data %>%
count(id, category) %>%
group_by(id) %>%
filter(n_distinct(category) == 2 & any(n > 3))
id category n
<dbl> <fct> <int>
1 2 a 4
2 2 b 2
如果您想要精确的输出,使用dplyr
and tidyr
,您可以执行以下操作:
data %>%
count(id, category) %>%
group_by(id) %>%
filter(n_distinct(category) == 2 & any(n > 3)) %>%
spread(category, n)
id a b
<dbl> <int> <int>
1 2 4 2
推荐阅读
- javascript - 从 json 获取值到数据表时出错
- bash - 为 bash 脚本提供接受标志(如命令)的选项
- java - 将 JSON 转换为具有 Json 属性的 POJO 作为具有不同属性的 jsonObject
- rust - 返回一个闭包,返回 Rust 中的函数参数
- javascript - 使用 ajax 或 javascript 时如何防止重复提交?
- arrays - 无法从 Stack1 类的参数化构造函数初始化数组大小......但如果我直接将整数值提供给数组代码工作正常
- parsing - 已解析项目的 FParsec 和后缀修饰符
- nginx - 使用 proxy_pass 为 NGINX 上的图像设置浏览器缓存
- python - Python中的selenium webdriver中的线程
- angular - 减小 Angular 7 应用程序的 NGRX 商店的大小