Frage

Ich möchte eine Spalte aus (möglicherweise) nicht eindeutigen Zeichenfolgen in eine Säule einzigartiger Zeichenfolgen machen.

Betrachten Sie zum Beispiel:

df <- data.frame(
     'Initials' = c("AA","AB","AB")
     , 'Data' = c(1,2,3)
 )
df
  Initials Data
1       AA    1
2       AB    2
3       AB    3

Ich möchte Folgendes erhalten:

  Initials Data    
1       AA        1
2       AB (1)    2
3       AB (2)    3

Vielen Dank!

Hinweis: Ich weiß, dass ich die Rownamen verwenden könnte, um die Zeile eindeutig zu identifizieren, aber ich möchte die in der Spalte in der Initialen gespeicherte Zeichenfolge behalten, wobei eine Nummer angehängt ist.

War es hilfreich?

Lösung

transform(df, Initials = ave(as.character(Initials), Initials, 
       FUN = function(x) if (length(x) > 1) paste0(x, " (", seq(x), ")") else x))

#   Initials Data
# 1       AA    1
# 2   AB (1)    2
# 3   AB (2)    3

Andere Tipps

w <- ave(df$Data, df$Initials, FUN = seq_along )
> df$Initials <- paste(df$Initials, "(", w, ")", sep = "")
# > df
#   Initials Data
# 1    AA(1)    1
# 2    AB(1)    2
# 3    AB(2)    3
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top