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



我有一个纵向数据集,其中每个受试者都被表示多次。一个代表一个病人一次入院。每一次录取,无论科目如何,都有一把独特的"钥匙"。我需要弄清楚哪个录取是"INDEX"录取,也就是第一个录取,这样我就知道哪些行是随后的RE录取。要使用的变量是"Daystoevent";最低的数字表示INDEX准入。我想创建一个新的变量,条件是对于每个受试者,变量"Daystoevent"中的最低数字是"索引"录取,每个后续的录取都有一个数字"1"、"2"等。我想在不改变水平格式的情况下做到这一点。

数据集如下所示:

Subject Daystoevent Key A 5 rtwe A 8 erer B 3 tter B 8 qgfb A 2 sada C 4 ccfw D 7 mjhr B 4 sdfw C 1 srtg C 2 xcvs D 3 muyg

非常感谢您的帮助。

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

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

数据:

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")
)

相关内容

  • 没有找到相关文章

最新更新