我有这样的矢量:
x = c("123-1", "123-2", "123-3", "222-1", "222-2", "333-1")
但它非常大。
我想只保留每个号码的最新版本。所以我想要输出如下:
z=c("123-3", "222-2", "333-1")
我怎么能这样做?
答案 0 :(得分:6)
假设您的x
实际上是字符串
x = c("123-1", "123-2", "123-3", "222-1", "222-2", "333-1")
x[!duplicated(sapply(strsplit(x, "-"), '[', 1), fromLast = TRUE)]
#[1] "123-3" "222-2" "333-1"
答案 1 :(得分:1)
目前尚不清楚字符串是否始终有序。如果没有,那么我们可能需要order
unname(tapply(x, sub("-.*", ".", x), FUN = function(y)
y[order(-as.numeric(sub("-", ".", y)))][1]))
#[1] "123-3" "222-2" "333-1"