R 滑动 window 通过 tibble
R slide window through tibble
我有一个简单的问题,但我无法找到解决方案。
另外,我没有找到我理解的答案。
假设我得到了这个数据框
(ts <- tibble(
+ a = LETTERS[1:10],
+ b = c(rep(1, 5), rep(2,5))
+ ))
# A tibble: 10 x 2
a b
<chr> <dbl>
1 A 1
2 B 1
3 C 1
4 D 1
5 E 1
6 F 2
7 G 2
8 H 2
9 I 2
10 J 2
我要的很简单。我想用 b
列索引一个滑动 window 的 df,它的大小为 a
.
输出可能是这样的:
# A tibble: 8 x 2
b a
<dbl> <chr>
1 1 A B
2 1 B C
3 1 C D
4 1 D E
5 2 F G
6 2 G H
7 2 H I
8 2 I J
我不关心 a
列是否包含数组(嵌套值)。
我只需要一个基于滑动 window.
的新数据框
由于此操作将在关系数据库中 运行 我想要一个与 DBI-PostgresSQL 兼容的函数。
感谢任何帮助。
提前致谢
我们可以按 'b' 分组,根据 'a' 的 lead
创建新列,删除 NA
行 na.omit
library(dplyr)
ts %>%
group_by(b) %>%
mutate(a2 = lead(a)) %>%
ungroup %>%
na.omit %>%
select(b, everything())
# A tibble: 8 x 3
# b a a2
# <dbl> <chr> <chr>
#1 1 A B
#2 1 B C
#3 1 C D
#4 1 D E
#5 2 F G
#6 2 G H
#7 2 H I
#8 2 I J
如果 lead
不起作用,则只需删除第一个元素,在 mutate
步骤的末尾附加 NA
ts %>%
group_by(b) %>%
mutate(a2 = c(a[-1], NA)) %>%
ungroup %>%
na.omit %>%
select(b, everything())
我有一个简单的问题,但我无法找到解决方案。 另外,我没有找到我理解的答案。
假设我得到了这个数据框
(ts <- tibble(
+ a = LETTERS[1:10],
+ b = c(rep(1, 5), rep(2,5))
+ ))
# A tibble: 10 x 2
a b
<chr> <dbl>
1 A 1
2 B 1
3 C 1
4 D 1
5 E 1
6 F 2
7 G 2
8 H 2
9 I 2
10 J 2
我要的很简单。我想用 b
列索引一个滑动 window 的 df,它的大小为 a
.
输出可能是这样的:
# A tibble: 8 x 2
b a
<dbl> <chr>
1 1 A B
2 1 B C
3 1 C D
4 1 D E
5 2 F G
6 2 G H
7 2 H I
8 2 I J
我不关心 a
列是否包含数组(嵌套值)。
我只需要一个基于滑动 window.
由于此操作将在关系数据库中 运行 我想要一个与 DBI-PostgresSQL 兼容的函数。
感谢任何帮助。
提前致谢
我们可以按 'b' 分组,根据 'a' 的 lead
创建新列,删除 NA
行 na.omit
library(dplyr)
ts %>%
group_by(b) %>%
mutate(a2 = lead(a)) %>%
ungroup %>%
na.omit %>%
select(b, everything())
# A tibble: 8 x 3
# b a a2
# <dbl> <chr> <chr>
#1 1 A B
#2 1 B C
#3 1 C D
#4 1 D E
#5 2 F G
#6 2 G H
#7 2 H I
#8 2 I J
如果 lead
不起作用,则只需删除第一个元素,在 mutate
步骤的末尾附加 NA
ts %>%
group_by(b) %>%
mutate(a2 = c(a[-1], NA)) %>%
ungroup %>%
na.omit %>%
select(b, everything())