R 如何根据条件为纵向数据集中的变量创建秩?

R 如何根据条件为纵向数据集中的变量创建秩?,r,rank,longitudinal,R,Rank,Longitudinal,我有一个纵向数据集,其中每个主题都有不止一次的表示。一代表一名患者的一次入院。每次入场,无论是哪门学科,都有一把独特的“钥匙”。我需要弄清楚哪个录取是“索引”录取,即第一次录取,这样我就知道哪些行是后续的重新录取。要使用的变量是“Daystoevent”;最低的数字表示索引许可。我想根据以下条件创建一个新变量:对于每个受试者,变量“Daystoevent”中的最低数字是“索引”准入,随后的每个受试者都会得到一个数字“1”、“2”等。我想这样做,而不必更改为水平格式 数据集如下所示: Subjec

我有一个纵向数据集,其中每个主题都有不止一次的表示。一代表一名患者的一次入院。每次入场,无论是哪门学科,都有一把独特的“钥匙”。我需要弄清楚哪个录取是“索引”录取,即第一次录取,这样我就知道哪些行是后续的重新录取。要使用的变量是“Daystoevent”;最低的数字表示索引许可。我想根据以下条件创建一个新变量:对于每个受试者,变量“Daystoevent”中的最低数字是“索引”准入,随后的每个受试者都会得到一个数字“1”、“2”等。我想这样做,而不必更改为水平格式

数据集如下所示:

Subject daysto事件键
一辆5英里的汽车
一个8欧元的欧元
B 3
B 8 qgfb
A 2萨达
C4CCFW
D 7兆焦耳
B 4 sdfw
c1srtg
c2xcvs
D3MUYG


非常感谢您的帮助。

这可能不是一个优雅的解决方案,但可以:

library(dplyr)

df <- df %>%
  group_by(Subject) %>%
  arrange(Subject, Daystoevent) %>%
  mutate(
    Admission = if_else(Daystoevent == min(Daystoevent), 0, 1),
  ) %>%
  ungroup()

for(i in 1:(nrow(df) - 1)) {
  if(df$Admission[i] == 1) {
    df$Admission[i + 1] <- 2
  } else if(df$Admission[i + 1] != 0){
    df$Admission[i + 1] <- df$Admission[i] + 1
  }
}

df[df == 0] <- "index"

df
# # A tibble: 11 x 4
#    Subject Daystoevent Key   Admission
#    <chr>         <dbl> <chr> <chr>    
#  1 A                 2 sada  index    
#  2 A                 5 rtwe  1        
#  3 A                 8 erer  2        
#  4 B                 3 tter  index    
#  5 B                 4 sdfw  1        
#  6 B                 8 qgfb  2        
#  7 C                 1 srtg  index    
#  8 C                 2 xcvs  1        
#  9 C                 4 ccfw  2        
# 10 D                 3 muyg  index    
# 11 D                 7 mjhr  1
库(dplyr)
df%
分组依据(受试者)%>%
安排(主题、日期和事件)%>%
变异(
入院=如果其他情况(Daystoevent==min(Daystoevent),0,1),
) %>%
解组()
适用于(i/1:(nrow(df)-1)){
如果(df$Admission[i]==1){

df$Admission[i+1]您能提供一个示例,说明此样本数据的正确输出是什么样的吗?谢谢:)非常感谢。第一部分似乎运行良好,但对于第二部分,我猜您编写的脚本只有在患者重新入院的最大次数为两次(即最大(入院)=2)时才有效,如我给出的示例中所示?如果不是2,让我们说10,那么?如果这太复杂,那么很抱歉。这是一个新问题。@MohammedAliAlvi;我不相信这里是这样的情况。此代码足够灵活,可以处理额外的入学申请。原始数据集应该存在另一个问题,示例不能代表它。请回答您的问题uestion,最好使用
dput
df <- data_frame(
  Subject = c("A", "A", "B", "B", "A", "C", "D", "B", "C", "C", "D"),
  Daystoevent = c(5, 8, 3, 8, 2, 4, 7, 4, 1, 2, 3),
  Key = c("rtwe", "erer", "tter", "qgfb", "sada", "ccfw", "mjhr", "sdfw", "srtg", "xcvs", "muyg")
)