我对数据集有一个非常特殊的情况以及我想用它做什么。为了使它全面,我必须简要描述背景:
我有一个传感器产生数据,需要时不时地进行维护。在每次维护之间,所产生的数据都呈下降趋势,我想摆脱这种趋势,并且由于维护经常进行,我想自动化这个过程。 执行维护时传感器关闭,但遥测系统仍然会产生标有“*”的读数。因此,可以在批次的“*”读数之间容易地发现要去趋势的数据子集。 通过使用条件语句循环数据来选择所需的值,我一直(尝试创建向量)(我可以在其上执行去趋势过程)尝试创建一个向量(不成功)。要开始选择我用于以下语句的值:
if((tryp[i-2,2]="*")&(tryp[i-1,2]="*")&(tryp[i,2]!="*"))
并完成选择(退出循环):
if((tryp[i-2,2]!="*")&(tryp[i-1,2]!="*")&(tryp[i,2]="*"))
但是,最后一个语句给出了“参数长度为零”的错误,并且第一个语句似乎也没有正常工作。
This is how the data looks like
因此,例如,我想选择用于去趋势的一个数据子集位于数据点9686和9690之间。显然,这是一个非常小的子集,但它很好地展示了我想要传达的内容。
如果有人能让我知道这样做的优雅方式,包括与我原本想做的事情有什么不同,我真的很感激。
非常感谢!
答案 0 :(得分:1)
library(dplyr)
my_df <- data.frame(a = LETTERS[1:10], b = c('+','*','*', '+', '*', '*', '+', '+', '*', '*'))
my_df %>% filter(b != '*')
假设&#39; +&#39; -signs是您的数据点,您可以轻松删除&#39; *&#39; -signs并过滤不包含它的行。< / p>
当然是没有dplyr
- 包的解决方案:
my_df[which(my_df$b!='*'),]