我有一个有三列的数据框,我想为媒体中的每个变量计算95%的上限公差水平。下面是数据的样子:所以,对于塑料和水,我需要分别计算每个变量的容差水平,并将其写在第四列。我正在使用
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谢谢,
发布于 2019-12-05 09:51:21
使用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 data 您的数据只有一个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))https://stackoverflow.com/questions/59186887
复制相似问题