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
ص - اصنع سلاسل فريدة في إطار بيانات
سؤال
أرغب في عمل عمود من الأوتار غير الموضعية (ربما) في عمود من الأوتار الفريدة.
على سبيل المثال ، ضع في اعتبارك:
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
أود الحصول على هذا:
Initials Data
1 AA 1
2 AB (1) 2
3 AB (2) 3
شكرًا!
ملاحظة: أعلم أنه يمكنني استخدام Rownames لتحديد الصف الفريد ، لكنني أرغب في الاحتفاظ بالسلسلة المخزنة في عمود الأحرف الأولى ، مع إلحاق رقم.
المحلول
نصائح أخرى
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
لا تنتمي إلى StackOverflow