首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置循环以使用r中的函数

设置循环以使用r中的函数
EN

Stack Overflow用户
提问于 2019-12-05 09:23:57
回答 1查看 46关注 0票数 1

我有一个有三列的数据框,我想为媒体中的每个变量计算95%的上限公差水平。下面是数据的样子:所以,对于塑料和水,我需要分别计算每个变量的容差水平,并将其写在第四列。我正在使用

代码语言:javascript
复制
nptol.int(data$result, alpha = 0.05, P = 0.95, side = 1, method=c("WILKS")) 

函数。

代码语言:javascript
复制
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

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2019-12-05 09:51:21

使用dplyr,您可以执行以下操作:

代码语言:javascript
复制
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列并保留所有结果,你可以这样做:

代码语言:javascript
复制
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

data 您的数据只有一个D值,显然这是npol.int的一个问题,所以我使用了以下数据:

代码语言:javascript
复制
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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59186887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档