如何在R数据帧的每个方向上获得满足给定条件的每行周围的k行?

时间:2017-06-23 18:03:47

标签: r dplyr tidyverse

dplyr解决方案是首选。

我们说我有以下数据:

library(tibble)

frame_data(
~a, ~b, ~c, ~d, ~e,
1, 2, 3, 4, FALSE,
5, 6, 7,8, TRUE,
9, 10, 11, 12, TRUE,
13, 14, 15, 16, FALSE,
17, 18, 19, 20, FALSE,
21, 22, 23, 24, FALSE,
25, 26, 27, 28, TRUE,
29, 30, 31, 32, FALSE,
33, 34, 35, 36, FALSE,
37, 38, 39, 40, FALSE
)

我希望提取e中的值为TRUE的行,然后提取k为TRUE的行周围的e行的窗口无论e中的值如何,都在两个方向上。例如,如果k=1,我想:

frame_data(
1, 2, 3, 4, FALSE,
5, 6, 7,8, TRUE,
9, 10, 11, 12, TRUE,
13, 14, 15, 16, FALSE,
21, 22, 23, 24, FALSE,
25, 26, 27, 28, TRUE,
29, 30, 31, 32, FALSE
)

如果k=2,我想要:

frame_data(
~a, ~b, ~c, ~d, ~e,
1, 2, 3, 4, FALSE,
5, 6, 7,8, TRUE,
9, 10, 11, 12, TRUE,
13, 14, 15, 16, FALSE,
17, 18, 19, 20, FALSE,
21, 22, 23, 24, FALSE,
25, 26, 27, 28, TRUE,
29, 30, 31, 32, FALSE,
33, 34, 35, 36, FALSE
)

1 个答案:

答案 0 :(得分:1)

这是一个潜在的解决方案:

<target name="messages" depends="clean" description="Create java binding java files">
    <echo message="Compiling the schema..." />
    <xjc schema="${common.loc}/WebContent/master.xsd" package="com.l3com.apps.messages" destdir="${common.loc}/src" extension="true" />
</target>

不像使用lat / lead功能那样直接,但它可以轻松调整窗口大小。它使用基数R并将限制行索引保持在数据帧的范围内。