R从预先指定的序列中标识缺少的行

R从预先指定的序列中标识缺少的行,r,R,我是一个较新的R转换,我有一个正在进行的研究的大型纵向数据集。数据组织为一个主题,每行一次访问。可能的就诊次数取决于每个受试者的登记时间。我想确定哪些访问遗漏了,或者说,在预期的访问顺序中哪里有中断。数据示例可能如下所示: id visit 1001 BL 1001 Week12 1001 Week24 1001 Week36 1002 BL 1002 Week12 1002 Week36 1002 Week48 1002 Week60 1002 Week72 1003

我是一个较新的R转换,我有一个正在进行的研究的大型纵向数据集。数据组织为一个主题,每行一次访问。可能的就诊次数取决于每个受试者的登记时间。我想确定哪些访问遗漏了,或者说,在预期的访问顺序中哪里有中断。数据示例可能如下所示:
  id  visit
1001     BL
1001 Week12
1001 Week24
1001 Week36
1002     BL
1002 Week12
1002 Week36
1002 Week48
1002 Week60
1002 Week72
1003     BL
1003 Week12
1003 Week24
我正在寻找的输出理想情况如下:

id visit_missing 1002 Week24 我去探望你失踪的人 1002周24
好吧,这是一个非常糟糕的方法,但现在是凌晨3点,这是我现在能想到的最好的方法

## Creating the dataset
id <- c(rep(1001, 5), rep(1002, 6), rep(1003, 3))
visit <- c('BL', 'Week12', 'Week24', 'Week36', 'Week72', 'BL', 'Week12', 'Week36', 'Week48', 'Week60', 'Week72', 'BL', 'Week12', 'Week24')
data <- data.frame(id, visit)
data
## What the data looks like
     id visit
2  1001    12
3  1001    24
4  1001    36
5  1001    72
7  1002    12
8  1002    36
9  1002    48
10 1002    60
11 1002    72
13 1003    12
14 1003    24

## Removing all the text from the visit column and retaining only numbers
data$visit <- gsub('[^0-9]', '', data$visit)
data$visit <- as.numeric(data$visit)
data <- data[!is.na(data$visit), ]

missing <- data.frame()

## Checks if the difference between two consecutive entries in the visit column is more than 12 for the same id, and adds all the missing values to the missing data frame
for (i in 2:nrow(data)) {
  if ((data$visit[i] - data$visit[i - 1] > 12) & (data$id[i] == data$id[i - 1])) {
    x <- data$visit[i] - data$visit[i - 1]
    while (x > 12) {
      x <- x - 12
      missing <- rbind(missing, data.frame(data$id[i], data$visit[i] - x))
    }
  }
}

missing
## Output
      data.id.i. data.visit.i....x
1       1001                48
2       1001                60
3       1002                24
创建数据集
你能提供更多关于如何识别失踪病例的信息吗?您可能需要研究substr()命令来提取visit变量的最后两个字符;正如@Zslice所说的,请尝试解释好您想要的输出。哇,感谢您的即时回复。我已经潜伏了一年多,终于被难住了,问了一个问题。所以每一个受试者每隔12周被观察一次。基线=“BL”或第0周、第12周、第24周、第36周、第48周、第60周、第72周、第84周,最后是第96周。和人类受试者一样,他们错过了随访,我想确定每个受试者何时发生这种情况。但是,这项研究正在进行中,因此一些受试者不会也不应该进行一些访问,但我想知道他们何时打破了顺序。更好?它有效!!您可能认为@Teja-K很糟糕,但它确实有效。谢谢