我试图找到Azure ML中顶部和底部深度值之间存在值的所有行。我使用的是dplyr的过滤功能,代码不会抛出错误。但是,当我查看结果时,它没有过滤任何东西。有人能看出我出错的地方吗?
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")
&#13;
我尝试了子集功能但获得了相同的结果。我很抱歉,因为我对r和Azure ML Studio都很陌生。
答案 0 :(得分:0)
欢迎来到R!
您的代码未按预期工作的原因是因为脚本中的前四行是分配向量。如果您使用base
R子集(在控制台尝试?'['
)并在列中执行逻辑测试作为向量,这将正常工作。
dplyr的工作方式有些不同。这个比喻更接近于SQL,对待每个&#34;列&#34;在数据集中作为SQL字段。因此,您可以直接使用变量,而无需将它们子集化为向量。
尝试:
dataset1 %>% filter(Upper_Depth > TopMD & Lower_Depth < BaseMD)
它应该为您提供dataset
,已过滤,以便每个条件的评估结果为TRUE
。
如果你想保存结果,只需左键 - 像这样分配:
full_data <- dataset1 %>% filter(Upper_Depth > TopMD & Lower_Depth < BaseMD)
我希望这有帮助!