我有数据框:
structure(list(Loc_name = c("U3R", "U3R", "U3R", "U3R", "U3R",
"U3R", "HWY301", "HWY301", "HWY301", "HWY301", "HWY301", "HWY301",
"U3R", "U3R", "U3R", "U3R", "U3R", "U3R", "HWY301", "HWY301",
"HWY301", "HWY301", "HWY301", "HWY301"), `fish type` = c("bass",
"bass", "bass", "catfish", "catfish", "catfish", "flathead",
"flathead", "flathead", "bass", "bass", "bass", "bass", "bass",
"bass", "catfish", "catfish", "catfish", "flathead", "flathead",
"flathead", "bass", "bass", "bass"), Report_result_value = c(1.1,
1.2, 1.3, 2.1, 2.2, 2.3, 3.1, 3.2, 3.3, 4.1, 4.2, 4.3, 1.1, 1.2,
1.3, 2.1, 2.2, 2.3, 3.1, 3.2, 3.3, 4.1, 4.2, 4.3), Chemical_Name = c("Cs-137",
"Cs-137", "Cs-137", "Cs-137", "Cs-137", "Cs-137", "Cs-137", "Cs-137",
"Cs-137", "Cs-137", "Cs-137", "Cs-137", "SR-90", "SR-90", "SR-90",
"SR-90", "SR-90", "SR-90", "SR-90", "SR-90", "SR-90", "SR-90",
"SR-90", "SR-90"), detect_flag = c("Y", "Y", "Y", "N", "Y", "N",
"N", "N", "N", "Y", "N", "N", "Y", "Y", "Y", "N", "Y", "N", "N",
"N", "N", "Y", "N", "N")), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -24L))
我想要获得特定化学物质在特定位置、特定鱼类中的平均报告结果值.取平均值的规则是:如果特定鱼类类型、特定位置、特定化学名称的检测标志为"N",则平均值为零.否则,无论检测标志如何,平均值都是直方平均值.例如,在HWY301,鱼类"黄头鱼"的SR-90的平均值为0.相反,在HWY301,鱼类"bass"的Cs-137平均含量为4.2.
我听说循环在R中很慢,所以我尽量避免使用循环.考虑到高于平均值的规则,有没有人在R中有计算平均值的方法?非常感谢.
我已经try 了Aggregate和dplyr的汇总函数,但我无法使用这些方法来适应平均规则.我对R还是个新手.