R xts-根据某些标准删除行

R xts-根据某些标准删除行,r,xts,R,Xts,我需要根据[code]列中的某些标准删除xts行。删除xts时间序列中的时间间隔是可以的 问题:如何解决步骤1/步骤3/步骤4 标准如下: 步骤1:[code]中的值[3]:如果xts以[code][3]开头,则删除该行 步骤2:[代码]中的值[0]:删除整行 步骤3:[code]中的值[2]:a)仅保留启动xts的[2],应删除前[2]上方的所有行。 b) 保持[2]在[3]之上 步骤4:[code]中的值[3]:仅保留其上方有[2]的[3] 我的步骤2解决方案: 查找并保留所有[2]和[3

我需要根据[code]列中的某些标准删除xts行。删除xts时间序列中的时间间隔是可以的

问题:如何解决步骤1/步骤3/步骤4


标准如下:

步骤1:[code]中的值[3]:如果xts以[code][3]开头,则删除该行

步骤2:[代码]中的值[0]:删除整行

步骤3:[code]中的值[2]:a)仅保留启动xts的[2],应删除前[2]上方的所有行。 b) 保持[2]在[3]之上

步骤4:[code]中的值[3]:仅保留其上方有[2]的[3]

我的步骤2解决方案:

查找并保留所有[2]和[3],从而删除所有[0]:

xts3 <- xts3[grep("[2]|[3]", xts3$code), ] 
说明:什么应该触发行的删除(基于标准):

删除行后的预期结果已完成:

                    code
2013-07-24 09:02:00    2
2013-07-24 09:07:00    3

如果只有0、2和3作为值,则可以使用
diff
在1go中获取大部分规则。只有差异为1(3以上2)或-1(2以上3)时才需要这些记录。因此,
diff
的绝对值将是我们所需要的。我们需要值为2的第一行。我们将它们组合起来,得到经过xts3_过滤的结果。
xts3_筛选出有趣的家庭作业(猜测),解决方案2a你可以做
xts3[which(xts3$code==2)[1]:nrow(xts3),]
@jay.sf它实际上不是家庭作业。我正在构建一个需要清理xts的系统。根据您的示例,请添加预期的输出。您是否需要使用xts,或者也可以使用dplyr/data.table或其他什么?规则4需要先执行还是在规则1-3执行之后执行?@phiver:我用预期结果更新了问题。我更喜欢使用xts,但另一种选择是将xts移动到数据帧,这样就失去了xts的时间戳功能。我想把R包的装载量保持在最低限度。我对步骤进行了重新排序,以便它们在顺序上更有意义。@jay.sf我被要求澄清步骤的顺序,因此您的答案是解决步骤3a。-Phiver,您提供的解决方案对问题中的最小化样本非常有效。由于某种原因,在我的真实R文件上运行时,结果只显示第一个找到的值[2],这意味着只有一行可见。我将获取真实文件,并将其水平和垂直剥离,以运行一些测试,并尝试隔离测试文件和真实文件之间的差异。
                    code
2013-07-24 09:01:00    3
2013-07-24 09:02:00    2
2013-07-24 09:03:00    0
2013-07-24 09:04:00    2
2013-07-24 09:05:00    2
2013-07-24 09:06:00    2
2013-07-24 09:07:00    3
2013-07-24 09:08:00    3
2013-07-24 09:09:00    3
                    code
2013-07-24 09:01:00    3 # To be removed due to step-1.
2013-07-24 09:02:00    2 # To be kept due to step-3a.
2013-07-24 09:03:00    0 # To be removed due to step-2
2013-07-24 09:04:00    2 # To be removed due to not fulfilling step-3b
2013-07-24 09:05:00    2 # To be removed due to not fulfilling step-3b
2013-07-24 09:06:00    2 # To be removed due to not fulfilling step-3b
2013-07-24 09:07:00    3 # The kept due to step-4
2013-07-24 09:08:00    3 # To be removed due to not fulfilling step4.
2013-07-24 09:09:00    3 # To be removed due to not fulfilling step4.
                    code
2013-07-24 09:02:00    2
2013-07-24 09:07:00    3
                    code
2013-07-24 09:02:00    2
2013-07-24 09:02:00    2
2013-07-24 09:07:00    3
xts3_filtered[!duplicated(index(xts3_filtered))]
                   code
2013-07-24 09:02:00    2
2013-07-24 09:07:00    3