【发布时间】:2014-08-05 18:13:20
【问题描述】:
我是 R 新手,想在代码中寻求帮助。我有一个包含多个变量的数据框“mydata”。但是由于我的一些代码无法正常工作,因此需要对数据进行一些清理。例如,在每分钟的“Temp”列中,一些异常值超出了 28 左右的典型值,例如 0、14、52...
温度 28.5 28.5 28.5 28.5 28.5 28.5 28.5 28.5 28.5 28.5 28.5 28.5 39.8 14 28.5 28.5 38.8 0 28.5 28.5 28.5 28.5 28.5 28.5 28.5 28.6 28.6 52.1 28.6 28.6 28.5 28.4 28.3 28.3 28.2 28.2 28.2 28.2 28.2 0
我想写一个 if then 语句来过滤掉这个数据帧中所有变量的异常值。这个想法是这样的:
for i in length(mydata) {
if (mydata[,i]-mydata[,i-1]>10)
mydata[,i] <- NA
}
解释一下,对于任何变量mydata$x,如果观测值x[i]和x[i-1]之间的绝对差值大于10,那么将给x[i]赋一个NA值。
IF THEN 语句对我来说似乎很难。希望任何人都可以通过提供代码来提供帮助。
谢谢。
【问题讨论】:
-
你能解释一下你过滤掉异常值的实际逻辑吗? 看起来您可能对
diff感兴趣,但您的问题并不清楚。 -
@AnandaMahto 谢谢你的问题,我可能没有说清楚。是的,我想我对 diff 语句很感兴趣。具体来说,对于数据框中的所有变量,除了“temp”变量之外,我想编写一个 IF 语句,对于所有 mydata$x[i] 观察,如果 mydata$x[i]-mydata$x[i- 1] > 10,那么 mydata$x[i] 将被分配一个 NA 值。
-
@Vicki1227 请在下面查看我的答案
标签: r if-statement na