首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将两个不同的数据帧分组到R中函数的输入中

如何将两个不同的数据帧分组到R中函数的输入中
EN

Stack Overflow用户
提问于 2021-08-17 15:34:36
回答 1查看 32关注 0票数 0

我有两个数据帧。关于具有多个值的材料编号的第一个数据帧信息。例如:

df1 =

代码语言:javascript
运行
复制
materialNumber value
  A             10
  A             20
  A             30
  A             40
  B             1
  B             2
  B             43
  C             12 
  C             19

然后是另一个数据帧,它只包含在df1中看到的相同材料编号的单个值。

df2=

代码语言:javascript
运行
复制
Materialnumber Value
 A               300
 B                13 
 C                18

我正在尝试确定数据帧2中的值与数据帧1中的值相比是否为异常值。我编写了一个函数来执行此操作。然而,我有超过10,000个材料编号。

将材料编号分组并将其运行到函数中的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-17 17:32:11

正如在chat中所讨论的,无需进一步调试即可将代码应用到df1和df2:

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

https://stackoverflow.com/questions/68820215

复制
相关文章

相似问题

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