问题描述
我在数据框中有X列,并想要创建RolPos。 RolPos列是具有3行滚动窗口的正值的滚动计数。任何帮助我该怎么做?
要使用的数据:
df <- data.frame(x = c(0,1,-3,-1,-5,3,-2))
解决方法
我建议这种values = gmail_count[1][0]
replaced = values.decode("utf-8").replace(" ",",")
方法具有对正值进行计数的功能:
slider
输出:
library(slider)
library(dplyr)
#Data
df <- data.frame(x=c(0,1,-3,-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))
,
您可以cbind
落后x
,然后rowSums
。
n <- length(x)
rowSums(cbind(x,c(0,x[1:(n-1)]),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,-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