我在下面有df,help.a
我需要使用多个过滤器操作来清理它。
help.a <- data.frame(id = as.factor(c("01", "01", "01", "01", "01", "04", "04", "05", "05", "05", "05", "05", "09", "09", "09", "09", "09")),
episode = c(3, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1),
count = c(1, 2, 3, 4, 5, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
var_a = c(73, 73, 73, 73, 73, 43, 43, 80, 80, 80, 80, 80, 73, 73, 73, 73, 42))
id episode count var_a
01 3 1 73
01 3 2 73
01 3 3 73
01 4 4 73
01 4 5 73
04 3 1 43
04 3 2 43
05 2 1 80
05 2 2 80
05 2 3 80
05 2 4 80
05 3 5 80
09 1 1 73
09 1 2 73
09 1 3 73
09 1 4 73
09 1 5 42
首先:我正在尝试删除计数少于3的所有ID(例如ID 4)
第二:我想删除多个情节的观测值,同时保留第一个观测到的情节(观测到的最低情节数)
第三:我只想保留具有相同var_a
变量的id观测值...如果有多个var_a
观测值,我只想保留第一个观测变量(例如,id 9和var_a 73)
最后,我希望我的数据集看起来类似于以下内容:
id episode count var_a
01 3 1 73
01 3 2 73
01 3 3 73
05 2 1 80
05 2 2 80
05 2 3 80
05 2 4 80
09 1 1 73
09 1 2 73
09 1 3 73
09 1 4 73
到目前为止,我的尝试已通过以下代码完成了第1部分:
help.a %>% group_by(id) %>% filter(!n() <3)
但是,我坚持如何告诉dplyr保持先观察episode
和先观察var.a
...任何建议,我们将不胜感激。
filter
通过“ id”分组后,我们可以一次使用所有三个条件
help.a %>%
group_by(id) %>% filter(n() >3 &
episode == first(episode) &
var_a == first(var_a))
# id episode count var_a
# <fctr> <dbl> <dbl> <dbl>
#1 01 3 1 73
#2 01 3 2 73
#3 01 3 3 73
#4 05 2 1 80
#5 05 2 2 80
#6 05 2 3 80
#7 05 2 4 80
#8 09 1 1 73
#9 09 1 2 73
#10 09 1 3 73
#11 09 1 4 73
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句