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 - Faire des chaînes uniques dans un cadre de données
Question
Je voudrais faire une colonne de chaînes (peut-être) non uniques dans une colonne de cordes uniques.
Par exemple, considérez:
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
Je voudrais obtenir ceci:
Initials Data
1 AA 1
2 AB (1) 2
3 AB (2) 3
Merci!
Remarque: Je sais que je pourrais utiliser les noms Rown pour identifier de manière unique la ligne, mais j'aimerais conserver la chaîne stockée dans la colonne initiales, avec un numéro annexé.
La solution
Autres conseils
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow