【发布时间】:2021-04-26 07:41:02
【问题描述】:
我想知道在不从数据框中删除数据的情况下,将 mutate 应用于数据子集的最佳方法是什么。例如,我想计算范围为-5:5 的数组的正整数的平均值。我的做法是:
library(dplyr)
#>
#> Attache Paket: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
tibble(x = -5:5) %>%
mutate(positive_mean = mean(x[x>0]))
#> # A tibble: 11 x 2
#> x positive_mean
#> <int> <dbl>
#> 1 -5 3
#> 2 -4 3
#> 3 -3 3
#> 4 -2 3
#> 5 -1 3
#> 6 0 3
#> 7 1 3
#> 8 2 3
#> 9 3 3
#> 10 4 3
#> 11 5 3
对此有何看法?有没有一种“更整洁”的方式来做到这一点?提前致谢!
【问题讨论】:
-
我确信这是一个非常高效且整洁的解决方案。你能详细说明它应该在什么意义上更高效或更整洁吗?
-
我不确定
[在mutate中的这种行为是故意的还是将来可能不起作用的“副作用”。我想知道是否有办法使用主要的dplyr动词。 -
就我而言,这绝对是故意的,我看不到这种情况将来会消失。