首页 > 解决方案 > 删除字符串向量中大于 11 的所有数字 - R

问题描述

我有一列包含一些数据。如何删除该列中某个值以上的所有数字。例子:

Talkative 3
Book Master 16
Grade from Lab 10
Grade from Lab 10
Grade from Lab 10
Grade from Lab 10
Book Master 15
Post Master 20

例如在上面的示例中,我想要的结果是:

Talkative 3
Book Master
Grade from Lab 10
Grade from Lab 10
Grade from Lab 10
Grade from Lab 10
Book Master
Post Master

11 以上的所有数字都被删除。

谢谢

标签: rvector

解决方案


一个选项是gsubfn

library(gsubfn)
df1$Col1 <- trimws(gsubfn("(\\d+)$", ~ replace(x, as.numeric(x) >11 | 
            as.numeric(x) < 1000, ""), df1$Col1))
df1$Col1
#[1] "Talkative 3"       "Book Master"       "Grade from Lab 10" 
#[4] "Grade from Lab 10" "Grade from Lab 10" "Grade from Lab 10" 
#[7] "Book Master"       "Post Master"    

数据

df1 <- structure(list(Col1 = c("Talkative 3", "Book Master 16", "Grade from Lab 10", 
"Grade from Lab 10", "Grade from Lab 10", "Grade from Lab 10", 
"Book Master 15", "Post Master 20")), class = "data.frame", row.names = c(NA, 
-8L))

推荐阅读