【发布时间】:2020-07-22 07:34:50
【问题描述】:
我有一个包含组和时间 ID 的数据框。现在我想创建一个新的计数变量,称为 X2,以每个组中以前的 X1 值为条件。
假设我有以下数据框,变量group、time、X1,并想创建X2。 X2 的值应该是一个计数变量,指示自给定组中 X1 上次等于 1 以来的句点数(即行数)。如果X1 之前的所有值都是0,则X2 应该是缺失的。
group time X1 X2
1 1 1 0 NA
2 1 2 0 NA
3 1 3 1 NA
4 1 4 0 0
5 1 5 1 1
6 2 1 0 NA
7 2 2 1 NA
8 2 3 1 0
9 2 4 1 0
10 2 5 0 0
11 3 1 0 NA
12 3 2 0 NA
13 3 3 0 NA
14 3 4 1 NA
15 3 5 0 0
16 4 1 1 NA
17 4 2 0 0
18 4 3 0 1
19 4 4 0 2
20 4 5 1 3
data_test <- data.frame(
group = rep(1:4, each = 5),
time = rep(1:5, n = 4),
X1 = c(0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1),
X2 = c(NA, NA, NA, 0, 1, NA, NA, 0, 0, 0, NA, NA, NA, NA, 0, NA, 0, 1, 2, 3))
我可以使用带有cumsum()==0 的if 命令轻松创建NA。但是,我不知道如何处理另一部分,即创建计数。
任何帮助将不胜感激 - 如果可能的话,请使用 dplyr。
非常感谢。
【问题讨论】:
标签: r dplyr count conditional-statements lag