R语言 从表列的每个值中选择最长字符串

5sxhfpxr  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(112)

我有以下日期框架:
| ID TX|组|
| --|--|
| HUDJDUDOOD--BANNK2--OLDODOLD98555545UIJF| 1 |
| UJDID YUH23498 IDX09| 2 |
| 小行星854| 3 |
我希望能够提取列ID TX下每个值的最长字符串,因为每个单元格可能有不同的字符串,也可能只有一个字符串,但在某些情况下,它们可能被标点符号分隔,如"," "--", "," "--"等,甚至是空格" ".
我已经想到了以下我需要先用一个白色空格" "替换标点符号然后..用" "分隔或分割每个单元格之后我会计算每个字符串的长度也许用nchart()str_length()并选择字符串的索引最长的值,但我还没有能够做到这一点,因为我不能管理,以选择索引(字),我需要分裂后的值,因为我不知道在什么索引最长的字符串可能是..我想要的输出将是:
| 输出|
| --|
| OLDODOLD98555545UIJF|
| YUH23498|
| UIJSAZXC|
侧记:没有烦恼就不会有牵绊。

v7pvogib

v7pvogib1#

# 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

字符串

相关问题