2014-10-30 74 views
0

我使用下面的代码从矢量中的每个字符串的末尾删除部分“(MV)”(特别是对于所有列的第1行,并跳过第1列,如代码所示)但是,即使它位于字符串的起始处,它也会删除矢量中的每个M,V和MV。使用gsub删除字符串的一部分

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") 
+3

您可以在'gsub'中使用'fixed'参数,可能使用'“(MV)”'作为模式。例如:'x < - “MV(MV)”; gsub(“(MV)”,“”,x,fixed = TRUE)'请提供一个可重复的示例,以便我们确切知道您在做什么。 – 2014-10-30 19:05:52

+0

@RichardScriven我用一个可重复的例子更新了这个问题 – athraa 2014-10-30 20:00:40

+0

你确定第一行不应该是列标题吗?这不是数据正常建立的方式。 – 2014-10-30 20:09:05

回答

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 

但我认为你需要的,因为它不更密切地看一看这个数据似乎没有正确设置。

+0

它应该是列标题,但它来自Excel文件。我认为将它清理成行而不是列名会更容易。 – athraa 2014-10-30 20:21:20