R gsub空白后的所有内容

我有点吃力弄清楚如何gsub后的第一个小时值的“空白”的一切。

as.data.frame(valeur)

         valeur
1    8:01 8:15 
2  17:46 18:00 
3          <NA>
4          <NA>
5          <NA>
6          <NA>
7    8:01 8:15 
8  17:46 18:00 

我需要的是

     valeur
1          8:01
2         17:46
3          <NA>
4          <NA>
5          <NA>
6          <NA>
7          8:01
8         17:46

任何线索?

我试过了

 gsub("[:blank:].*$","",valeur)

几乎

valeur = c(" 8:01 8:15 ", " 17:46 18:00 ", NA, NA, NA, NA, " 8:01 8:15 ", 
" 17:46 18:00 ")

我想你有'价格'产量的领先/滞后空间。 我们可以删除那些与gsub 。 我们在字符串( s+$ )的字符串( ^s+ )或( | )空格处匹配一个或多个空格,替换为''

valeur1 <- gsub('^s+|s+$', '', valeur)

如果我们需要第一个非空格字符,我们将匹配空格( s+ )后跟非空格( S+ )直到字符串结尾并用''替换。

sub('s+S+$', '', valeur1)
#[1] "8:01"  "17:46" NA      NA      NA      NA      "8:01"  "17:46"

要获取最后一个非空格字符,请使用sub从字符串('^')开始,匹配一个或多个不是空格( S+ )的字符,后跟一个或多个空格( s+ )和将其替换为''以获取最后一个非空格字符。

sub('^S+s+', '', valeur1)
#[1] "8:15"  "18:00" NA      NA      NA      NA      "8:15"  "18:00"

上述操作可以在一个步骤中完成,我们在开头匹配零个或多个空格( ^s* )或( | )一个或多个空格( s+ ),后跟一个或多个非空格字符( S+ ),然后在末尾有零个或多个空格字符( s*$ ),并用''替换。

 gsub("^s*|s+S+s*$","",valeur)
 #[1] "8:01"  "17:46" NA      NA      NA      NA      "8:01"  "17:46"

或者另一个选项是来自library(stringi) stri_extract_firststri_extract_last ,其中我们匹配开始或结尾处的一个或多个非空格字符。

 library(stringi)
 stri_extract_first(valeur, regex='S+')
 #[1] "8:01"  "17:46" NA      NA      NA      NA      "8:01"  "17:46"

对于last空字符

 stri_extract_last(valeur, regex='S+')
 #[1] "8:15"  "18:00" NA      NA      NA      NA      "8:15"  "18:00"

为了贡献,只想到:

substr(x = valeur, start = 2, stop = 6)
[1] "8:01 " "17:46" NA      NA      NA      NA      "8:01 " "17:46"
链接地址: http://www.djcxy.com/p/38319.html

上一篇: R gsub everything after blank

下一篇: gsub replace and clean in same line of code