向字符串添加破折号
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"
我想我有一个简单的问题,但我没有明白。我有这样的东西:
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"