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