我正在从某些传感器接收数据。但是上周出现了一些问题,导致一些传感器发送了错误和异常的值。例如。 + 678摄氏度和-456摄氏度。
但这一天仅发生几次,并且也有很多正常数据输入。所以我不能只过滤掉日子,我只想过滤掉错误的值。
我试图创建一个自定义列,其中我有一个if语句将错误的值设置为1并将det normal设置为0,然后只删除所有具有1的行。但是当我知道那里的时候,我只收到0是一些假定为1的行。
这是我的if语句:
if [Sensor Type] = "Temperature" and [SensorValue] > 60 and [SensorValue] < 0 then 1
else if [Sensor Type] ="Humidity" and [SensorValue] > 90 and [SensorValue] < 1 then 1
else if [Sensor Type] = "CO2" and [SensorValue] > 1200 and [SensorValue] < 1 then 1
else if [Sensor Type] = "Openings" and [SensorValue] > 4000 and [SensorValue] < 1 then 1
else 0
在此列中,我只会得到0。
有人可以帮助我吗?还是您有其他方法可以滤除错误的值?
谢谢!
答案 0 :(得分:1)
温度不能同时大于60 小于0。为了正确起见,您的支票应为[Sensor Type] = "Temperature" and ([SensorValue] > 60 or [SensorValue] < 0)
,因此类似这样:
if [Sensor Type] = "Temperature" and ([SensorValue] > 60 or [SensorValue] < 0) then 1
else if [Sensor Type] ="Humidity" and ([SensorValue] > 90 or [SensorValue] < 1) then 1
else if [Sensor Type] = "CO2" and ([SensorValue] > 1200 or [SensorValue] < 1) then 1
else if [Sensor Type] = "Openings" and ([SensorValue] > 4000 or [SensorValue] < 1) then 1
else 0
如果您采取相反的操作,可能会更容易理解:
if [Sensor Type] = "Temperature" and [SensorValue] > 60 then 0
else if [Sensor Type] = "Temperature" and [SensorValue] < 0 then 0
else if [Sensor Type] ="Humidity" and [SensorValue] > 90 then 0
else if [Sensor Type] ="Humidity" and [SensorValue] < 1 then 0
else if [Sensor Type] = "CO2" and [SensorValue] > 1200 then 0
else if [Sensor Type] = "CO2" and [SensorValue] < 1 then 0
else if [Sensor Type] = "Openings" and [SensorValue] > 4000 then 0
else if [Sensor Type] = "Openings" and [SensorValue] < 1 then 0
else 1