Dplyr:计算最后 X 行的特征
Dplyr: compute features on the last X rows
我需要计算一些特征:
- 来自 User_id
- 滚动 window 2 行 (当前行和上一行)
我有这个:
Data <- data.frame(
user_id = rep(1:2, each=4),
question = c("yes", "yes", "no", "no","yes", "no", "yes", "no")
)
我想要这个:
Data2 <- data.frame(
Data,
nb_yes_last_2rows = c(1, 2, 1, 0, 1, 1, 1, 1)
)
解释:
- 从第1行来看,当前
行和上一行(不存在)包含 1 "yes".
- 从第2行pov开始,当前行和上一行包含2个"yes"
- 从第3行pov开始,当前行和上一行包含1个"yes"
- 从第4行pov开始,当前行和上一行包含0"yes"
- 警告:它涉及一个新用户,所以我没有考虑前一行与另一个用户有关的内容。
从第一行的角度来看,当前行和上一行(该用户不存在)包含 1 "yes".
- ...
问题:
如何以 dplyr
方式计算第二个数据集的 nb_yes_last_2rows
列?
我想这就是您要找的。你基本上想在 2
的滚动 window 中计算 "yes" 的实例
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
我需要计算一些特征:
- 来自 User_id
- 滚动 window 2 行 (当前行和上一行)
我有这个:
Data <- data.frame(
user_id = rep(1:2, each=4),
question = c("yes", "yes", "no", "no","yes", "no", "yes", "no")
)
我想要这个:
Data2 <- data.frame(
Data,
nb_yes_last_2rows = c(1, 2, 1, 0, 1, 1, 1, 1)
)
解释:
- 从第1行来看,当前 行和上一行(不存在)包含 1 "yes".
- 从第2行pov开始,当前行和上一行包含2个"yes"
- 从第3行pov开始,当前行和上一行包含1个"yes"
- 从第4行pov开始,当前行和上一行包含0"yes"
- 警告:它涉及一个新用户,所以我没有考虑前一行与另一个用户有关的内容。 从第一行的角度来看,当前行和上一行(该用户不存在)包含 1 "yes".
- ...
问题:
如何以 dplyr
方式计算第二个数据集的 nb_yes_last_2rows
列?
我想这就是您要找的。你基本上想在 2
的滚动 window 中计算 "yes" 的实例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