r - 如何将两个不同的数据帧分组为R中函数的输入
问题描述
我有两个数据框。关于具有多个值的物料编号的第一个数据帧信息。例如:
df1 =
materialNumber value
A 10
A 20
A 30
A 40
B 1
B 2
B 43
C 12
C 19
然后是另一个数据框,它只包含 df1 中相同材料编号的单个值。
df2=
Materialnumber Value
A 300
B 13
C 18
我试图确定数据框 2 中的值与数据框 1 中的值相比是否为异常值。我编写了一个函数来执行此操作。但是,我有超过 10,000 个材料编号。
将材料编号分组并将其运行到函数中的最佳方法是什么?
解决方案
正如这里的聊天中所讨论的,您的代码适用于 df1 和 df2 ,无需进一步调试:
dixon_test_results <- function(materialNumber,forecast){
EKPO_Values <- df1 %>%
dplyr::filter(materialNumber == materialNumber) %>%
dplyr::pull(value)
Q = abs(forecast-EKPO_Values[which.min(abs(EKPO_Values - forecast))])/diff(range(EKPO_Values))
print(Q)
# assumes 95% confidence
# reference: webspace.ship.edu/pgmarr/…
dixon_q_table_val <- switch(
length(EKPO_Values)-1, # assumes that the forecast is now part of the EKPO data set, but values assume n = 3, so
length(ekpo)+forecast()
0.9411,
0.7651,
0.6423,
0.5624,
0.5077,
0.4673,
0.4363,
0.4122,
0.3922,
0.3755,
0.3615,
0.3496,
0.3389,
0.3293,
0.3208,
0.3135,
0.3068,
0.3005,
0.2947,
0.2895,
0.2851,
0.2804,
0.2763,
0.2725,
0.2686,
0.2655,
0.2622,
0.2594
)
if (Q>dixon_q_table_val) {
return(materialNumber)
} else {
return(NA_charcter_)
}
}
df2 %>%
dplyr::mutate(res = dixon_test_results (Materialnumber , Value))
推荐阅读
- c# - IIS asp.net C# API Post Method 错误“'远程服务器返回错误:(403) Forbidden.'”
- sql - Sql Server 以“X 秒/分钟/小时/天”格式获取时间
- python - 使用 rpy2 将图像数据从 R 返回到 Python
- sql - 如何排除只买车的用户?
- css - 在 CSS 文件中反应部署失败
- python - TypeError: my_label_encoder() 接受 2 个位置参数,但给出了 3 个
- python - 将水平对齐的文本文件解析为 DataFrame
- python - 如果数据框存在于另一个数据框列中,则搜索它的子字符串
- java - 我在从二叉搜索树中删除节点时遇到问题。我想我还没有理解 Java 对象如何工作的基础知识
- javascript - 在客户端存储用户数据(用户 ID、用户名、JWT 令牌)的最佳选择是什么?