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
。
我想重复该计算,但能够手动选择要排除的变量。例如,如果我想排除: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
推荐阅读
- python - 制作excel文件合并编码python
- gradle - 使用 Kordamp gradle 项目聚合 PMD 报告
- node.js - 非 UTF-8 字符串错误公共域但不是 lcoalhost
- python - 根据列表中的两个元素计算列表列表的平均值?
- asynchronous - 我应该如何对事件驱动的服务进行健康检查
- amazon-web-services - 根据 RDS 的存储大小更新 cloudwatch 警报阈值
- javascript - 如何在猫鼬预钩子中访问请求对象
- c# - 将数据从 c# 保存到 Excel 崩溃
- android - recyclerview 中的第一项重复
- node.js - Express Route 级中间件的作用类似于 App 级中间件