R 基于时态数据中的最后一次观测生成条件变量
我需要一个函数从这些数据中生成两个变量。仅当V1=1时,第一个需要在最后一次观察时为1,然后在所有情况下在最后一次观察时为1。理想的最终产品:R 基于时态数据中的最后一次观测生成条件变量,r,R,我需要一个函数从这些数据中生成两个变量。仅当V1=1时,第一个需要在最后一次观察时为1,然后在所有情况下在最后一次观察时为1。理想的最终产品: ID T V1 1 1 1 1 2 1 2 1 0 2 2 0 3 1 1 3 2 1 3 3 1 提前感谢。在dplyr包中,您可以根据案例中的ID根据变量对数据进行分组,并对每个组进行操作。由于列T中的一个已经计算了每个组中每个观察值的秩,因此可以与函数n结合使用,该函数返回每个组的行数,以获得所需的结果 假设您的数据位于数据帧df中: 这对
ID T V1
1 1 1
1 2 1
2 1 0
2 2 0
3 1 1
3 2 1
3 3 1
提前感谢。在dplyr包中,您可以根据案例中的ID根据变量对数据进行分组,并对每个组进行操作。由于列T中的一个已经计算了每个组中每个观察值的秩,因此可以与函数n结合使用,该函数返回每个组的行数,以获得所需的结果
假设您的数据位于数据帧df中:
这对上面提供的测试数据非常有效,正如您所演示的,这是我希望的方向,但我错过了n命令!但是根据我的数据,我得到v2和v3都是0值。数据是按时间而不是按ID排序的,所以我修改了代码,添加了:df%>%arrangedf,descT%>%groupbyid%>%mutate v2=1*T==n,v3=1*T==n*V1==1,仍然没有骰子。有没有想过是什么导致了结果的差异?首先,更改列T的名称,因为在R脚本中,T代表真正的逻辑语句。这可能是错误的根源。使用管道操作符时,不需要重写数据:df%>%arrangecol\t
ID T V1 v2 v3
1 1 1 0 0
1 2 1 1 1
2 1 0 0 0
2 2 0 0 1
3 1 1 0 0
3 2 1 0 0
3 3 1 1 1
df %>%
group_by(ID) %>%
mutate(
v2 = 1 * (`T` == n()),
v3 = 1 * (`T` == n()) * (V1 == 1)
)
# A tibble: 7 x 5
# Groups: ID [3]
ID T V1 v2 v3
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 1 0 0
2 1 2 1 1 1
3 2 1 0 0 0
4 2 2 0 1 0
5 3 1 1 0 0
6 3 2 1 0 0
7 3 3 1 1 1