我正在尝试从现有数据框创建一个子集,其中变量“Readings”显示的值大于上一个读数,以及“Time”变量的相应行条目。 我在下面写的代码只生成“NA”条目。
Data$Readings<-0
for (i in 1:nrow(Data)){
Pos.Readings<-Data[Data$Readings[i+1]>Data$Readings[i],]
}
Pos.Readings
如果读数变量中有i + 1&gt; i,我希望新数据框显示i和i + 1的行条目。
以下是数据的示例
Time Readings
12:00:00 0.1
12:00:01 0.3
12:00:02 0.45
12:00:03 0.2
12:00:04 0.02
12:00:05 -0.7
12:00:06 -0.25
12:00:07 0.27
所以,我的目标应该是:
Time Readings
12:00:00 0.1
12:00:01 0.3
12:00:02 0.45
12:00:05 -0.7
12:00:06 -0.25
12:00:07 0.27
我可能已经错误地写了for循环,但我希望我的意图对所有人都清楚。
答案 0 :(得分:1)
看起来你关心的是读数的绝对值大于前一个。如果是这种情况,请尝试:
comparisons <- Data$Readings[-nrow(Data)]
Data$prevReading <- 0 #or just a really small number that automatically keeps row 1
Data$prevReading[-1] <- comparisons
subsetData <- subset(Data, abs(prevReading) < abs(Readings))
subsetData <- subsetData[c("Time", "Readings")]
如果您想要比较实际读数而不是绝对值,那么在子集时只需删除两个abs()
命令。