只有在空白或"时才需要修剪最后一个字符串。"

时间:2017-09-20 04:14:54

标签: r

我有一个从excel文件中读取的大量单词。其中一些记录以空格或"结尾。"。期。只有在那些情况下,我才需要削减这些字符。

示例:

"depresion"                              "tristeza."                             
"nostalgia"                              "preocupacion."                         
"enojo."                                 "soledad "                              
"frustracion"                            "desesperacion "                        
"angustia."                              "desconocidos."                         

请注意,某些单词在没有"的情况下正常结束。"或" "

有办法吗?

我有这个

substr(conceptos, 1, nchar(conceptos)-1)) 

测试最后一个字符(conceptos是这个长矢量)

感谢您的任何建议,

3 个答案:

答案 0 :(得分:4)

我们可以使用sub匹配零个或多个.或空格,并将其替换为空白(""

sub("(\\.| )*$", "", v1)
#[1] "depresion"     "tristeza"      "nostalgia"     "preocupacion"  "enojo"   
#[6] "soledad"       "frustracion"   "desesperacion"
#[9] "angustia"      "desconocidos" 

数据

v1 <- c("depresion","tristeza.","nostalgia","preocupacion.",
   "enojo.","soledad ","frustracion","desesperacion ",
   "angustia.","desconocidos.")

答案 1 :(得分:4)

正则表达式对此有好处:

library(stringr)

x = c("depresion", "tristeza.", "nostalgia", "preocupacion.", 
      "enojo.", "soledad ", "frustracion", "desesperacion ", 
      "angustia.", "desconocidos.")
x_replaced = str_replace(x, "(\\.|\\s)$", "")

模式(\\.|\\s)$将匹配.或发生在字符串末尾的任何空格。

答案 2 :(得分:-3)

试试这个:

iif((mid(trim(conceptos),Len(conceptos),1)==“。”)?substr(conceptos,1,nchar(conceptos)-1)):trim(conceptos))