Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dplyr:计算最后X行上的功能_R_Dplyr - Fatal编程技术网

Dplyr:计算最后X行上的功能

Dplyr:计算最后X行上的功能,r,dplyr,R,Dplyr,我需要计算一些特性: 按用户标识 在两行滚动窗口上(当前行和上一行) 我有这个: Data <- data.frame( user_id = rep(1:2, each=4), question = c("yes", "yes", "no", "no","yes", "no", "yes", "no") ) 数据我想这就是你要找的。您基本上希望在2的滚动窗口中计算“是”的实例 library(zoo) library(dplyr) Data %>% group_

我需要计算一些特性:

  • 按用户标识
  • 在两行滚动窗口上(当前行和上一行)
我有这个:

Data <- data.frame(
  user_id = rep(1:2, each=4),
  question = c("yes", "yes", "no",  "no","yes", "no", "yes", "no")
)

数据我想这就是你要找的。您基本上希望在2的滚动窗口中计算“是”的实例

library(zoo)
library(dplyr)

Data %>%
  group_by(user_id) %>%
  mutate(nb_yes_last_2rows = rollapply(question, 2, function(x) sum(x == "yes"), 
                                       partial = TRUE, align = "right"))

# Source: local data frame [8 x 3]
# Groups: user_id
# 
#   user_id question nb_yes_last_2rows
# 1       1      yes                 1
# 2       1      yes                 2
# 3       1       no                 1
# 4       1       no                 0
# 5       2      yes                 1
# 6       2       no                 1
# 7       2      yes                 1
# 8       2       no                 1

问题是什么?看一看包小插曲我已经澄清了这个问题。你想把
1
放在所有地方,并且只在有超过1个连续的“是”时才计算吗?@Jaap我已经熟悉这个小插曲,但我没有找到这个问题的答案。是的,我认为这就是我想要的。我应该使用术语滚动窗口而不是特定窗口。谢谢
library(zoo)
library(dplyr)

Data %>%
  group_by(user_id) %>%
  mutate(nb_yes_last_2rows = rollapply(question, 2, function(x) sum(x == "yes"), 
                                       partial = TRUE, align = "right"))

# Source: local data frame [8 x 3]
# Groups: user_id
# 
#   user_id question nb_yes_last_2rows
# 1       1      yes                 1
# 2       1      yes                 2
# 3       1       no                 1
# 4       1       no                 0
# 5       2      yes                 1
# 6       2       no                 1
# 7       2      yes                 1
# 8       2       no                 1