r在数据帧的给定列中替换部分值

  • 本文关键字:替换部 数据帧
  • 更新时间 :
  • 英文 :


我有一个这样的数据帧:

TAGNAME                                  VALUE
XX:YY:ZZ:WXYX:title_for_this.and_that_a   20.2
PP:YY:ZZ:ABCF:title_for_this.and_that_b   45.7
QQ:YY:ZZ:FGHJ:title_for_this.and_that_c   27.2
RR:YY:ZZ:JYHG:title_for_this.and_that_d   30.9

我需要删除TAGNAME中出现在最后一个冒号之前的所有字符。所以我需要的是:

TAGNAME                     VALUE
title_for_this.and_that_a    20.2
title_for_this.and_that_b    45.7
title_for_this.and_that_c    27.2
title_for_this.and_that_d    30.9

我可以使用获取最后一个冒号之前的所有字符

tagnames <- sapply(strsplit(data_frame$TAGNAME, "\:[^\:]*$"), "[", 1)

我试着用这个来将TAGNAME中的字符如下所示:

for(i in 1:nrow(data_frame)) {
   data_frame[i,1] <- gsub(data_frame[i,1], tagnames[i],'')
 }

这除了是一种糟糕的数据帧循环方式之外,也不起作用。

df$TAGNAME = sub(".*:","", df$TAGNAME)

正则表达式".*:"的解释
.选择任何字符*在此之前出现0次或多次:
有关regex的其他信息,请参阅此网站。

最新更新