我有一个矩阵,其中包含特定于每行的值和ID。我正试图计算这些值的简单平均值,但希望根据其ID手动排除一些值。
假设我有以下矩阵:
library(stringi)
set.seed(20)
mat <- cbind.data.frame(id = stri_rand_strings(6, 3, pattern = "[A-Za-z0-9]") ,
number = runif(6, min=0, max=100) )
为
id number
1 slH 28.926236
2 Wxy 81.945649
3 54K 49.196770
4 Mik 3.025649
5 0kB 44.023153
6 SJ6 7.728510
的平均值是:mean(mat$number )
给出35.80766
。
我想重复该计算,但能够手动选择要排除哪些变量。例如,如果我想要排除:slH
和54K
,我可以尝试手动删除这些行:
mean(mat$number[-c(1 , 3)] ,)
,但如果要忽略的矩阵和ID非常大(容易出错),这可能会有问题。是否有一种方法可以手动给出要排除的值?
library(stringi)
library(tidyverse)
set.seed(20)
df1 <- tibble(id = stri_rand_strings(6, 3, pattern = "[A-Za-z0-9]"),
number = runif(6, min = 0, max = 100))
df1
#> # A tibble: 6 x 2
#> id number
#> <chr> <dbl>
#> 1 slH 28.9
#> 2 Wxy 81.9
#> 3 54K 49.2
#> 4 Mik 3.03
#> 5 0kB 44.0
#> 6 SJ6 7.73
df1 %>%
filter(! id %in% c("slH", "54K")) %>%
summarise(number = mean(number))
#> # A tibble: 1 x 1
#> number
#> <dbl>
#> 1 34.2