R 正值的滚动计数
R rolling count of positive values
我在数据框中有 X 列,想创建 RolPos。 RolPos 列是具有 3 行滚动 window 的正值的滚动计数。有什么帮助吗?
要使用的数据:
df <- data.frame(x = c(0, 1, -3, -1, 1, -5, 3, -2))
我建议使用这种 slider
方法,其中包含计算正值的函数:
library(slider)
library(dplyr)
#Data
df <- data.frame(x=c(0,1,-3,-1,1,-5,3,-2))
#Function
getpos <- function(x)
{
y <- length(which(x>0))
return(y)
}
# Rolling by group
df %>%
mutate(rolling = slide_dbl(x, getpos, .before = 2, .complete = FALSE))
输出:
x rolling
1 0 0
2 1 1
3 -3 1
4 -1 1
5 1 1
6 -5 1
7 3 2
8 -2 1
你可以 cbind
滞后的 x
然后 rowSums
.
n <- length(x)
rowSums(cbind(x, c(0, x[1:(n-1)]), c(0, 0, x[1:(n-2)])) > 0)
#[1] 0 1 1 1 1 1 2 1
您可以使用 runner。有关更多案例,请参阅文档和插图。
library(runner)
library(dplyr)
df <- data.frame(x = c(0, 1, -3, -1, 1, -5, 3, -2))
df %>%
mutate(
RolPos = runner(
x = df$x,
f = function(x) {
sum(x > 0)
},
k = 3
)
)
# x RolPos
# 1 0 0
# 2 1 1
# 3 -3 1
# 4 -1 1
# 5 1 1
# 6 -5 1
# 7 3 2
# 8 -2 1
我在数据框中有 X 列,想创建 RolPos。 RolPos 列是具有 3 行滚动 window 的正值的滚动计数。有什么帮助吗?
要使用的数据:
df <- data.frame(x = c(0, 1, -3, -1, 1, -5, 3, -2))
我建议使用这种 slider
方法,其中包含计算正值的函数:
library(slider)
library(dplyr)
#Data
df <- data.frame(x=c(0,1,-3,-1,1,-5,3,-2))
#Function
getpos <- function(x)
{
y <- length(which(x>0))
return(y)
}
# Rolling by group
df %>%
mutate(rolling = slide_dbl(x, getpos, .before = 2, .complete = FALSE))
输出:
x rolling
1 0 0
2 1 1
3 -3 1
4 -1 1
5 1 1
6 -5 1
7 3 2
8 -2 1
你可以 cbind
滞后的 x
然后 rowSums
.
n <- length(x)
rowSums(cbind(x, c(0, x[1:(n-1)]), c(0, 0, x[1:(n-2)])) > 0)
#[1] 0 1 1 1 1 1 2 1
您可以使用 runner。有关更多案例,请参阅文档和插图。
library(runner)
library(dplyr)
df <- data.frame(x = c(0, 1, -3, -1, 1, -5, 3, -2))
df %>%
mutate(
RolPos = runner(
x = df$x,
f = function(x) {
sum(x > 0)
},
k = 3
)
)
# x RolPos
# 1 0 0
# 2 1 1
# 3 -3 1
# 4 -1 1
# 5 1 1
# 6 -5 1
# 7 3 2
# 8 -2 1