r语言 - 计算加权平均值,同时排除字符串上的某些行



我有一个矩阵,其中包含特定于每行的值和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

我想重复该计算,但能够手动选择要排除哪些变量。例如,如果我想要排除:slH54K,我可以尝试手动删除这些行:

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

相关内容

  • 没有找到相关文章

最新更新