从 table 列的每个值中选择最长的字符串

Selecting longest string from each value of table column

大家好,希望你们过得愉快,

我有以下日期范围:

ID TX GROUP
HUDJDUDOOD--BANNK2--OLDODOLD985555545UIJF 1
UJDID YUH23498 IDX09 2
854 UIJSAZXC 3

我希望能够为列 ID TX 下的每个值提取最长的字符串,因为我知道每个单元格可能有不同的字符串,或者可能只有一个,但在某些情况下,它们可能由标点符号分隔,例如作为 "," "--", "," "--" 等甚至 space " ".

我想到了以下我需要先用白色 space " " 替换标点符号然后.. 用 " " 分隔或拆分每个单元格 然后我会计算每个字符串的长度可能 nchart()str_length() 和 select 字符串的索引是最长的值,但我还不能这样做,因为我无法管理 select 拆分值后我需要的索引(单词),因为我不知道最长的字符串可能在哪个索引中。我想要的输出是:

OUTPUT
OLDODOLD985555545UIJF
YUH23498
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