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