Привет всем, я надеюсь, что вы, ребята, хорошо проводите время,
У меня есть следующий кадр даты:
| идентификатор TX | ГРУППА |
|---|---|
| HUDJDUDOOD--BANNK2--OLDODOLD985555545UIJF | 1 |
| УЖДИД ЮХ23498 IDX09 | 2 |
| 854 UIJSAZXC | 3 |
Я хотел бы иметь возможность извлекать самую длинную строку для каждого значения в столбце ID TX, зная, что каждая ячейка может иметь разные строки или, может быть, только одну, но в некоторых случаях они могут быть разделены знаками препинания, такими как "," "--", "," "--" ect или даже пробелом " ".
Я подумал о следующем: мне нужно сначала заменить знаки препинания пробелом " ", затем .. разделить или разделить каждую ячейку на " " после этого я вычислю длину каждой строки, возможно, с помощью nchart() или str_length() и выберу индекс строки самое длинное значение, но я еще не смог этого сделать, так как не могу выбрать индекс (слово), который мне нужен после разделения значений, поскольку я не знаю, в каком индексе может быть самая длинная строка. мой желаемый результат будет быть:
| ВЫХОД |
|---|
| СТАРОДОЛД985555545УЙФ |
| ЮХ23498 |
| UIJSAZXC |
примечание: не беспокойтесь, галстуков не будет.
Большое спасибо, ребята, за вашу помощь, я буду очень настороже, чтобы наградить вас за ваш ответ!





# Your data
dat <- structure(list(ID_TX = c("HUDJDUDOOD--BANNK2--OLDODOLD985555545UIJF",
"UJDID YUH23498 IDX09", "854 UIJSAZXC"), GROUP = 1:3), class = "data.frame", row.names = c(NA,
-3L))
# Splitting strings in the data
spl <- strsplit(dat$ID_TX, "--|\\s")
# Identify the position of the longest string in each row
idx <- spl|> lapply(nchar) |> lapply(which.max) |> unlist()
# Select the longest string and bind them to a data.frame
mapply(function(x,y) spl[[x]][y], seq_along(idx),idx) |>
as.data.frame() |>
setNames("OUTPUT")
# The result
# OUTPUT
#1 OLDODOLD985555545UIJF
#2 YUH23498
#3 UIJSAZXC