Hiho @All,
leider habe ich keine Hinweise zu dieser konkreten Frage gefunden, daher hoffe ich, dass mir hier jemand helfen kann.
Ich habe in R ein dataframe df mit einer Identifikationsnummer ID und einer Jahreszahl YEAR, wobei die ID mehrfach auftaucht mit steigender Jahreszahl:
Jetzt möchte ich eine neue Spalte hinzufügen, welche für jede ID das aus der Liste kleinste Jahr mit der ID liefert, d.h.
Mithilfe von
erhalte ich das Minimale Jahr für die ID aus Spalte 2. Das ganze kann ich jetzt natürlich für alle 400.000 Zeilen in meinem echten Anwendungsfall als Schleife durchgehen, ein leeres Dataframe damit befüllen und dann mithilfe von cbind anhängen, d.h.
Funktioniert, dauert aber auch entsprechend ~30 Minuten und fühlt sich zu umständlich an, um richtig zu sein 
Welche schnellere Möglichkeite gibt es, die gewünschte Spalte zu erhalten?
Gibt es eine Möglichkeit, die gewünschte Spalte vllt sogar direkt mit einer Zeile (Code) zu erhalten?
MfG
Bonanca
leider habe ich keine Hinweise zu dieser konkreten Frage gefunden, daher hoffe ich, dass mir hier jemand helfen kann.
Ich habe in R ein dataframe df mit einer Identifikationsnummer ID und einer Jahreszahl YEAR, wobei die ID mehrfach auftaucht mit steigender Jahreszahl:
| ID | YEAR |
| 1 | 2018 |
| 1 | 2019 |
| 1 | 2020 |
| 2 | 2019 |
| 2 | 2020 |
| 3 | 2017 |
| 3 | 2018 |
| 3 | 2019 |
| 3 | 2020 |
Jetzt möchte ich eine neue Spalte hinzufügen, welche für jede ID das aus der Liste kleinste Jahr mit der ID liefert, d.h.
| ID | YEAR | MIN_YEAR |
| 1 | 2018 | 2018 |
| 1 | 2019 | 2018 |
| 1 | 2020 | 2018 |
| 2 | 2019 | 2019 |
| 2 | 2020 | 2019 |
| 3 | 2017 | 2017 |
| 3 | 2018 | 2017 |
| 3 | 2019 | 2017 |
| 3 | 2020 | 2017 |
Mithilfe von
Code:
min( df[df$ID == df[2, "ID"] , "YEAR" )
Code:
buffer <- data.frame()
for (id in df$ID) {
buffer <- rbind(buffer, min( df[df$ID == id , "YEAR"] ) )
}
df <- cbind(df, buffer)
Welche schnellere Möglichkeite gibt es, die gewünschte Spalte zu erhalten?
Gibt es eine Möglichkeit, die gewünschte Spalte vllt sogar direkt mit einer Zeile (Code) zu erhalten?
MfG
Bonanca
Zuletzt bearbeitet: