r - 在 r 中过滤面板数据集
问题描述
我有一个这种形式的数据框
familyid memberid occupation panelid year
1 1 1 1 2000
1 2 1 1 2000
2 1 1 1 2000
2 2 2 1 2000
3 1 1 1 2000
3 2 1 1 2000
3 3 1 1 2000
1 1 2 2 2001
1 2 1 2 2001
2 1 2 2 2001
2 2 2 2 2001
3 1 1 2 2001
3 2 2 2 2001
3 3 2 2 2001
我想过滤这个数据框以获得以下内容。
familyid memberid occupation panelid year
1 1 1 1 2000
2 1 1 1 2000
3 2 1 1 2000
3 3 1 1 2000
1 1 2 2 2001
2 1 2 2 2001
3 2 2 2 2001
3 3 2 2 2001
换句话说,我只想保留在 2000 年(panelid==1)和 2001 年(panelid==2)显示职业==1 和职业==2 的面板 obs。有人知道怎么做这个吗?非常感谢大家,
马可
解决方案
filter
在这里,我们可以根据any
'occupation' 1 和 'year' 2000 以及any
'occupation' 2 和 'year' 2001按 'familyid'、'memberid' 分组
library(tidyverse)
df1 %>%
group_by(familyid, memberid) %>%
filter(any(occupation == 1 & year == 2000) & any(occupation == 2 & year == 2001))
# A tibble: 8 x 5
# Groups: familyid, memberid [4]
# familyid memberid occupation panelid year
# <int> <int> <int> <int> <int>
#1 1 1 1 1 2000
#2 2 1 1 1 2000
#3 3 2 1 1 2000
#4 3 3 1 1 2000
#5 1 1 2 2 2001
#6 2 1 2 2 2001
#7 3 2 2 2 2001
#8 3 3 2 2 2001
或者如果'occupation'和'year'的级别只有两个,那么我们也可以用countn_distinct
来为filter
ing创建一个逻辑向量
df1 %>%
group_by(familyid, memberid) %>%
filter(n_distinct(occupation) >1 & n_distinct(year)> 1)
数据
df1 <- structure(list(familyid = c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 1L, 1L,
2L, 2L, 3L, 3L, 3L), memberid = c(1L, 2L, 1L, 2L, 1L, 2L, 3L,
1L, 2L, 1L, 2L, 1L, 2L, 3L), occupation = c(1L, 1L, 1L, 2L, 1L,
1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 2L), panelid = c(1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), year = c(2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2001L, 2001L, 2001L,
2001L, 2001L, 2001L, 2001L)), class = "data.frame", row.names = c(NA,
-14L))
推荐阅读
- python - 如何找到javascript链接并点击它?
- winforms - JAWS 未读取按钮的 AccessibilityDescription
- python - 在字段中为 rest API 端点序列化字典 django rest 框架
- akka.net - 在 Akka TestKit 中捕获演员构造的错误
- c++ - c++模板,如何将模板参数映射到其他模板参数
- linux - 帮助 struct aead_request(Linux 内核中的加密子系统)中的 void *__ctx[] CRYPTO_MINALIGN_ATTR
- python - 如何在 setup.py 文件中为 python 脚本添加“导入文件”?
- javascript - 通过扩展名从 JavaScript 数组中获取文件名
- docker - 容器中的 Kubernetes 权限被拒绝
- c# - UIKit.UIScrollView 中是否有类似 Android.Widget.ScrollView 的 NestedScrollingEnabled 的属性?