为后续访问创建假人

我有一个带有id和时间序列指示器(prd)的简单数据结构。我想为后续访问“ fup”创建一个虚拟变量,如果患者没有更多访问,则该变量等于0;如果患者将来有更多访问,则该变量等于1。

我该怎么做?

id<- c(1,1,2,3,3)
prd <- c(1,2)

df <- data.frame(id=id,prd=prd)

所需的输出:

  id prd fup
1  1   1   1
2  1   2   1
3  1   3   0
4  2   1   0
5  3   1   1
6  3   2   0
xufeng123456 回答:为后续访问创建假人

我们可以检查当前行是否是每个组中的最后一行。在基数R中,

df$fup <- with(df,ave(prd,id,FUN = function(x) seq_along(x) != length(x)))
df

#  id prd fup
#1  1   1   1
#2  1   2   1
#3  1   3   0
#4  2   1   0
#5  3   1   1
#6  3   2   0

类似地在dplyr中,

library(dplyr)
df %>%  group_by(id) %>%  mutate(fup = +(row_number() != n()))

data.table

library(data.table)
setDT(df)[,fup := +(seq_along(prd) != .N),by = id]
本文链接:https://www.f2er.com/3166548.html

大家都在问