Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.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
R 基于时态数据中的最后一次观测生成条件变量_R - Fatal编程技术网

R 基于时态数据中的最后一次观测生成条件变量

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中: 这对

我需要一个函数从这些数据中生成两个变量。仅当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中:


这对上面提供的测试数据非常有效,正如您所演示的,这是我希望的方向,但我错过了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