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
R - Machen Sie einzigartige Zeichenfolgen in einem Datenrahmen
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.
Lösung
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