У меня есть фрейм данных с переменной фактора и идентификатор, который помогает сгруппировать эти факторы. Вот мой пример фрейма данных и сопровождающего кода, который в настоящее время не дает правильный ответ:
library(dplyr)
names <- c("Andrew","Andrew","Andy","Andy","Alex","Alexander")
name.id <- c(1,1,1,1,2,2)
df1 <- data.frame(names, name.id)
df1 <- group_by(df1,name.id) %>%
mutate(name.len=nchar(as.character(names))) %>%
mutate(new.name = min(as.character(names)))
Я хочу, чтобы переменная new.name равнялась имени в группе идентификаторов с наименьшим количеством символов (name.len). Переменная должна быть «Alex» для ID = 1, но при использовании минимальной переменной сравниваются только символы внутри каждой цифры, в результате чего значение «r» в «Andrew» будет меньше значения «y» в «Andy». Я не знаю, как сделать условную переменную, которая получает этот фактор, связанный с минимальным значением nchar в группах
EDIT:
Чтобы быть более понятным, я хотел бы, чтобы мои окончательные данные выглядели следующим образом (вспомогательные столбцы тоже подойдут):
names name.id new.names
1 Andrew 1 Andy
2 Andrew 1 Andy
3 Andy 1 Andy
4 Andy 1 Andy
5 Alex 2 Alex
6 Alexander 2 Alex