r - 如何根据值根据跨行列之间的条件对数据框进行子集化
问题描述
我有一个数据框,其中包含有关个人 ID、期间和工作地点代码的信息。我想知道在数据集的整个时间跨度内独自工作的人是谁。
考虑下面这个非常简单的例子。个人 A 在第 1 期单独在两个工作地点 (x,y) 工作。个人 B 和 C 在第 1 期在工作地点 z 一起工作。个人 B 在第 2 期单独在工作地点 w 工作。个人 D 在第 k 地点单独工作在第 2 期。
mydf <- data.frame(id=c('A','A','B','C','B','D'),
period=c(1,1,1,1,2,2),
work_place=c('x','y','z','z','w','k'))
我想确定那些在整个期间独自工作的人的行,在这种情况下是指个人 A 和 D。
ids_alone <- data.frame(id=c('A','A','D'),
period=c(1,1,2),
work_place=c('x','y','k'))
解决方案
按'period'、'work_place'分组,创建一个列'n',其中包含不同'id'的数量,然后按'id'分组,filter
那些'id'的all
元素'n'为1
library(dplyr)
mydf %>%
group_by(period, work_place) %>%
mutate(n = n_distinct(id)) %>%
group_by(id) %>%
filter(all(n ==1)) %>%
ungroup %>%
select(-n)
-输出
# A tibble: 3 x 3
# id period work_place
# <chr> <dbl> <chr>
#1 A 1 x
#2 A 1 y
#3 D 2 k
推荐阅读
- javascript - 将 nodejs 样式的导出转换为 typescript 样式的导出
- python - Python字典初始化和值追加到列表
- c# - 添加以不同标签显示的列表框项目和值(在不同表单之间)
- sql - 属性错误“元组”对象没有属性“employee_id”
- javascript - 如何将 javscript 分数变量发布到 django 中的视图?
- c++ - 有人可以用 C++ 解释 { } 容器吗
- python-3.x - Pygame图像未在窗口中加载
- android - 使用 RecycleView 的多视图 - Kotlin(Android) - 无法切换视图
- eclipse - 如何为最新的 eclipse ide(版本 2020-03)安装 scala 插件
- typescript - 如何在不需要的情况下在本机反应中加载静态图像?