我有以下日期范围:
TXID | 团体 |
---|---|
HUDJDUDOOD--银行2--OLDODOLD985555545UIJF | 1 |
UJDID YUH23498 IDX09 | 2 |
854 UIJSAZXC | 3 |
我希望能够为列下的每个值提取最长的字符串
ID TX
知道每个单元格可能有不同的字符串或者可能只有一个,但在某些情况下它们可能由标点符号分隔,例如"," "--", "," "--"
等或甚至一个空间" ".
我想到了以下内容,我需要首先用空格替换标点符号
" "
,然后..用" "
分隔或分割每个单元格,之后我可能会用nchart()
或str_length()
计算每个字符串的长度
并选择最长值的字符串索引,但我还无法这样做,因为我无法在分割值后选择我需要的索引(单词),因为我不知道在哪个索引中最长的字符串可能是..我想要的输出是:
输出 |
---|
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