我有一个表格列表(金额,年和月),我想过滤与完整年份相对应的行.即我想省略下面给出的示例数据帧的最后4行,参考2015,并获得其余的60.是否可以使用单个dplyr命令执行此操作?
我试过这个:
df %>%
group_by(year) %>%
tally() %>%
filter (n==12) %>%
ungroup()
Run Code Online (Sandbox Code Playgroud)
但我想ungroup会做出与我想要的不同的事情.是否可以使用单个dplyr命令执行此操作?
df <- structure(list(amount = c(16365, 31850, 32230, 34177.75, 27900,
29650, 28846, 27300, 37115.31, 34130.38, 39676.1, 47244.44, 3500,
25425.48, 22628.43, 30822.86, 30100, 41567.13, 25400, 23125,
40073.75, 16505.82, 17770, 38406.03, 1528.25, 23475.77, 29869.69,
17020, 19270, 13085.47, 10607.48, 7800, 15220, 15260, 17580,
25094.66, 3908.74, 8150, 25055.89, 19690.65, 12445.4, 10347.39,
7645.39, 49300, 8690, 13660, 16510, 34457.08, 522.68, 10202,
18900, 25027.1, 24956.42, 23259, 32743, 37226, 32697, 32258,
31336.67, 36135.81, 4389.26, 12450, 46220.43, …
Run Code Online (Sandbox Code Playgroud) 类似于这个问题,但增加了皱纹。我只想过滤在组的任何行的特定列中具有两个(或全部几个)值的行组。
例如,假设我有这个数据框:
df <- data.frame(Group=LETTERS[c(1,1,1,2,2,2,3,3,3,3)], Value=c(5, 1:4, 1:4, 5))
Run Code Online (Sandbox Code Playgroud)
我想要那些字母,其中任何字母都有对应值为 4 的行和对应值为 5 的行,所以:
Group Value
<fct> <dbl>
1 C 2
2 C 3
3 C 4
4 C 5
Run Code Online (Sandbox Code Playgroud)
我能做到这一点与一对any
内部调用filter
是这样的:
df %>%
group_by(Group) %>%
filter(any(Value == 4),
any(Value == 5))
Run Code Online (Sandbox Code Playgroud)
有没有办法在一行中进行过滤器调用?像:(注意这不起作用,all_of
不是真正的功能)
df %>%
group_by(Group) %>%
filter(all_of(Value == 4 & Value == 5))
Run Code Online (Sandbox Code Playgroud)