Drehen habe ich einen Datenrahmen, df
:einfache Art und Weise von Duplikaten in der leeren Einträge in einem Datenrahmen in R
ID <- c('ID1','ID1','ID2','ID3','ID3','ID3','ID4')
hr <- c(10,20,10,15,20,10,15)
DD <- c('DD1','DD2','DD3','DD4','DD5','DD6','DD7')
ddhr <- c(15,20,30,20,10,15,10)
df <- data.frame(ID,hr,DD,ddhr)
df
ID hr DD ddhr
1 ID1 10 DD1 15
2 ID1 20 DD2 20
3 ID2 10 DD3 30
4 ID3 15 DD4 20
5 ID3 20 DD5 10
6 ID3 10 DD6 15
7 ID4 15 DD7 10
Dieser Datenrahmen von df$ID
bestellt wird.
Ich mag diesen Datenrahmen ändern, so dass jedes Mal, wenn ein Duplikat df$ID
Eintrag auftritt, wird dieser Eintrag duplizieren und den entsprechenden df$hr
Eintrag sind leere Einträge umgewandelt (""
).
Die ideale resultierender Datenrahmen würde wie folgt aussehen:
ID hr DD ddhr
1 ID1 10 DD1 15
2 DD2 20
3 ID2 10 DD3 30
4 ID3 15 DD4 20
5 DD5 10
6 DD6 15
7 ID4 15 DD7 10
Was ist der beste Weg, dies zu tun? Ich habe versucht:
df$ID=as.character(df$ID)
df$ID=ifelse(!duplicated(df$ID)==FALSE,"",df$ID)
df$hr=ifelse(df$ID=="","",df$hr)
Aber das scheint ein bisschen lang, vor allem, wenn ich mehr als eine zusätzliche Spalte muss ich leer wollen aus (außer h).