Ich habe einen Datensatz von wiederholten Messungen (hb) über die Zeit (Tag) für verschiedene Patienten (record_id). Ich würde gerne den Nadir Wert von HB für jeden Patienten finden, und dann verwenden Sie es eine kategorische Variable, die die Patienten in "niedrigen Nadirhb" (< 70), "Mitte Nadirhb" (70-90) und "High Nadirhb" (> 90). Ich würde für Ihre Hilfe sehr dankbar sein, wie ich ganz fest am ...neue kategoriale Variable basierend auf Min-Wert für jeden Patienten erstellen
record_id Day hb
1 0 122
1 1 90
1 2 71
1 3 71
2 0 139
2 1 130
2 2 119
2 3 106
3 0 89
3 1 126
3 2 127
3 3 110
4 0 90
4 1 86
4 2 82
4 3 78
5 0 118
5 1 108
5 2 95
5 3 94
ich den Code unten versucht, aber ich kann nicht fusionieren df und x1:
x1 <- aggregate(hb~record_id, data=df, FUN=function(df) c(min=min(df), count=length(df))) #this successfully finds the min hb for each patient
x1<- rename(x1, c("hb" = "nadirhb"))
x1 <- as.data.frame(x1)
m=merge(df,x1,by="record_id")
summary(df$nadirhb)
#create hb categorical variable
df$hbcat[df$nadirhb >=90] <- 2
df$hbcat[df$nadirhb >=70 & df$hb <90] <- 1
df$hbcat[df$nadirhb <70] <- 0
table(df$hbcat)
Sie könnten vereinfachen mit 'summarize()'. Vielleicht etwas in diesen Zeilen: 'df%>% group_by (record_id)%>% zusammenfassen (min_hb = min (hb))%>% mutieren (hb_segment = ifelse (min_hb <70," niedrig ", ifelse (min_hb <90, "mittel", "hoch"))) ' –
@JohnSG das sieht wirklich elegant aus, und ich kann sehen, dass es funktionieren sollte! Wenn ich dies jedoch auf den gesamten Datensatz anwende, 'df <- df %>% group_by (record_id)%>% muate (min_hb = min (hb)) zusammenfassung (df $ min_hb) > min. 1. Qu. Mittlerer Mittelwert 3rd Qu. Max. NA's NA NA NA NaN NA NA 1426' Ich bekomme, dass sie alle fehlende Werte sind. Ich habe Werte in meinem Dataset verloren, aber ich habe versucht, na.rm = TRUE ohne Verbesserung hinzuzufügen. Vielen Dank – Annemarie
Ich habe es !! Es ist, weil plyr geladen wurde. Die Entfernung von diesem hat alle Probleme gelöst !! Danke – Annemarie