使用gsub删除部分字符串

时间:2014-10-30 19:04:09

标签: r gsub

我使用下面的代码从向量中的每个字符串的末尾删除部分“(MV)”(特别是所有列的行号1和代码中显示的跳过列1),但是,它删除了每个向量中的M,V和MV,即使它位于字符串的开头。

df[1,(-1)]<-gsub("[(MV)]","",df[1,(-1)])

如何只删除每个字符串末尾的(MV)部分而不影响其余部分呢?

这是一个可重复的例子:

structure(list(X1 = structure(c(NA, 5447), class = "Date"), X2 = c("AVON(MV)", 
"28.34"), X3 = c("BA.(MV)", "750.07"), X4 = c("CMRG(MV)", "10.040000000000001"
), X5 = c("COB(MV)", "143.22999999999999")), .Names = c("X1", 
"X2", "X3", "X4", "X5"), row.names = c(NA, -2L), class = "data.frame")

1 个答案:

答案 0 :(得分:1)

您确定第一行不应该是列标题吗?这并不是数据正常设置的方式,如果您需要使用数字进行计算,则会导致问题。

无论如何,要从每个字符串中删除(MV),请尝试fixed中的gsub参数,并制作模式"(MV)"

df[1,-1] <- gsub("(MV)", "", df[1,-1], fixed=TRUE)
df
#           X1    X2     X3                 X4                 X5
# 1       <NA>  AVON    BA.               CMRG                COB
# 2 1984-11-30 28.34 750.07 10.040000000000001 143.22999999999999

但我认为您需要更仔细地查看这些数据,因为它似乎没有正确设置。