【问题标题】:R filter function won't filter out resultsR过滤器功能不会过滤掉结果
【发布时间】:2018-06-08 17:26:21
【问题描述】:

我正在尝试查找 Azure ML 中顶部和底部深度值之间存在值的所有行。我用的是dplyr的filter函数,代码没有报错。但是当我查看结果时,它没有过滤任何东西。有人能看出我哪里出错了吗?

library(dplyr)

Upper_Depth<-dataset1$Upper_Depth
Lower_Depth<-dataset1$Lower_Depth
TopMD<-dataset1$TopMD
BaseMD<-dataset1$BaseMD

  # Filter where the Perf is within the Upper and Lower Depth intervals:
  #select(Upper_Depth, Lower_Depth, TopMD, BaseMD) %>%
  filter(dataset1, Upper_Depth > TopMD & Lower_Depth < BaseMD);
  
  # Subset the data where the perfs are in the L_WSEC_A:
  #subset(dataset1, Upper_Depth > TopMD & Lower_Depth < BaseMD)
  
  full_data <- dataset1

# Select data.frame to be sent to the output Dataset port
maml.mapOutputPort("full_data")

我尝试了子集函数,但得到了相同的结果。很抱歉,因为我对 r 和 Azure ML Studio 非常陌生。

【问题讨论】:

    标签: r azure


    【解决方案1】:

    欢迎来到 R!

    您的代码未按预期工作的原因是脚本中的前四行正在分配向量。如果您使用base R 子集(在控制台尝试?'[')并在列中作为向量执行逻辑测试,这将正常工作。

    dplyr 的工作方式略有不同。这个比喻更接近于 SQL,将数据集中的每个“列”都视为一个 SQL 字段。因此,您可以直接使用变量,而无需将它们分成向量。

    试试:

       dataset1 %>% filter(Upper_Depth > TopMD & Lower_Depth < BaseMD)
    

    它应该给你你的dataset,过滤后每个条件评估为TRUE

    如果你想保存结果,只需像这样左分配它们:

       full_data <- dataset1 %>% filter(Upper_Depth > TopMD & Lower_Depth < BaseMD)
    

    我希望这会有所帮助!

    【讨论】:

    • 非常感谢您的解释!完美运行。
    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2018-03-05
    • 2017-04-22
    • 2017-08-24
    • 1970-01-01
    相关资源
    最近更新 更多