r - 设置循环以使用 r 中的函数
问题描述
我有一个包含三列的数据框,我想为媒体中的每个变量计算 95% 的公差上限。数据如下所示:因此,对于塑料和水,我需要分别计算每个变量的容差水平并将其写为第 4 列。我在用
nptol.int(data$result, alpha = 0.05, P = 0.95, side = 1, method=c("WILKS"))
功能。
media variable result
plastic A 2.3
plastic B 4
plastic C 4.6
plastic D 3
plastic A 2
plastic B 5
plastic C 6.7
plastic A 8
plastic B 5
plastic C 4
water A 2
water B 4
water C 5
water A 8.2
water B 4
water C 5
plastic A 6
plastic B 7
plastic C 11.2
谢谢,
解决方案
使用dplyr
,您可以执行以下操作:
library(dplyr)
library(tolerance)
df %>% group_by(media, variable) %>% summarize(Upper = nptol.int(result, alpha = 0.05, P = 0.95, side = 1, method=c("WILKS"))$`1-sided.upper`)
# A tibble: 6 x 3
# Groups: media [2]
media variable Upper
<fct> <fct> <dbl>
1 plastic A 11.2
2 plastic B 8
3 plastic C 7
4 water A 5
5 water B 8.2
6 water C 4
如果您想写为第 4 列并保留所有结果,您可以执行以下操作:
df %>% group_by(media, variable) %>% mutate(Upper = nptol.int(result, alpha = 0.05, P = 0.95, side = 1, method=c("WILKS"))$`1-sided.upper`)
# A tibble: 19 x 4
# Groups: media, variable [6]
media variable result Upper
<fct> <fct> <dbl> <dbl>
1 plastic A 2.3 11.2
2 plastic B 4 8
3 plastic C 4.6 7
4 plastic A 3 11.2
5 plastic B 2 8
6 plastic C 5 7
7 plastic A 6.7 11.2
8 plastic B 8 8
9 plastic C 5 7
10 plastic A 4 11.2
11 water B 2 8.2
12 water C 4 4
13 water A 5 5
14 water B 8.2 8.2
15 water C 4 4
16 water A 5 5
17 plastic B 6 8
18 plastic C 7 7
19 plastic A 11.2 11.2
数据
您的数据只有一个 D 值,显然这是一个问题npol.int
,所以我使用了这个数据:
df = data.frame(media = c(rep("plastic",10), rep("water",6), rep("plastic",3)),
variable = c(LETTERS[1:3],rep(LETTERS[1:3],5),"A"),
result = c(2.3,4,4.6,3,2,5,6.7,8,5,4,2,4,5,8.2,4,5,6,7,11.2))
推荐阅读
- nginx - t2 (AWS EC2) 服务器上的简单 Nginx 配置在子目录上提供 504 网关超时
- python - 如何使用 Python 连接到基于 Web 的预测端点
- node.js - Typescript、React、Electron:不能在模块外使用 import 语句
- github-pages - 网页无法在 git-pages 上加载
- sql - SQL和业务逻辑的简单分离
- json - Delphi HTTPClient 根页面
- android - 这是“未将结果或意图数据放入片段中的 onActivityResultMethod()”的答案
- node.js - 重新连接的猫鼬 useDB
- cmd - 试图让 cmd 提示说话,给我一个错误
- php - PHP Fpdf 库:在 PDF 中每一页的页眉中嵌入徽标图像