向字符串添加破折号

Adding a dash to a string

我想我有一个简单的问题,但我没有明白。我有这样的东西:

df <- data.frame(identifier = c("9562231945200505501901190109-5405303
", "190109-8731478", "1901098260031", " 
.9..43675190109-3690341", "-1103214010200000190109-8841419", "-190109-5232506-.08001234-111",
                                "190109-2018362-","51770217835901218103304190109-9339765
"), true_values = c("190109-5405303","190109-8731478","190109-8260031","190109-3690341","190109-8841419",
                    "190109-5232506","190109-2018362","190109-9339765"))

我使用了下面的函数,它几乎可以工作,但我不知道如何避免最后一个破折号。

我尝试了 str_replace 和其他方法,但没有用。

您可以在使用 gsub 删除不需要的部分后尝试使用 paste substr

tt <- gsub("-\..*", "", df$identifier)
tt <- gsub("[^0-9]", "", tt)
tt <- substring(tt, nchar(tt)-12)
paste0(substr(tt, 1, 6), "-", substring(tt, 7))
#[1] "190109-5405303" "190109-8731478" "190109-8260031" "190109-3690341"
#[5] "190109-8841419" "190109-5232506" "190109-2018362" "190109-9339765"