R gsub 空白后的所有内容
R gsub everything after blank
我正在努力弄清楚如何 gsub
第一个 小时 值的 "blank" 之后的所有内容。
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 ")
我猜你从 'valeur' 输出中得到了 leading/lagging space。我们可以用 gsub
删除那些。我们匹配一个或多个space从字符串的开头(^\s+
)或者(|
)到字符串的结尾space(\s+$
),替换为 ''
。
valeur1 <- gsub('^\s+|\s+$', '', valeur)
如果我们需要第一个非space字符,我们匹配space(\s+
)后跟非space(\S+
)直到字符串的末尾并替换为 ''
.
sub('\s+\S+$', '', valeur1)
#[1] "8:01" "17:46" NA NA NA NA "8:01" "17:46"
要获取最后的非space字符,请使用sub
匹配一个或多个不是space(\S+
)开头的字符字符串 ('^') 后跟一个或多个 space (\s+
) 并将其替换为 ''
以获得最后一个非 space 字符。
sub('^\S+\s+', '', valeur1)
#[1] "8:15" "18:00" NA NA NA NA "8:15" "18:00"
以上可以一步完成,我们在开头匹配零个或多个 space (^\s*
) 或 (|
) 一个或多个 space (\s+
) 后跟一个或多个非 space 字符 (\S+
),最后跟零个或多个 space 字符 (\s*$
) 并替换为 ''
.
gsub("^\s*|\s+\S+\s*$","",valeur)
#[1] "8:01" "17:46" NA NA NA NA "8:01" "17:46"
或者另一种选择是 stri_extract_first
或 stri_extract_last
来自 library(stringi)
我们在开头或结尾匹配一个或多个非 space 字符。
library(stringi)
stri_extract_first(valeur, regex='\S+')
#[1] "8:01" "17:46" NA NA NA NA "8:01" "17:46"
对于last
non_space个字符
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"
我正在努力弄清楚如何 gsub
第一个 小时 值的 "blank" 之后的所有内容。
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 ")
我猜你从 'valeur' 输出中得到了 leading/lagging space。我们可以用 gsub
删除那些。我们匹配一个或多个space从字符串的开头(^\s+
)或者(|
)到字符串的结尾space(\s+$
),替换为 ''
。
valeur1 <- gsub('^\s+|\s+$', '', valeur)
如果我们需要第一个非space字符,我们匹配space(\s+
)后跟非space(\S+
)直到字符串的末尾并替换为 ''
.
sub('\s+\S+$', '', valeur1)
#[1] "8:01" "17:46" NA NA NA NA "8:01" "17:46"
要获取最后的非space字符,请使用sub
匹配一个或多个不是space(\S+
)开头的字符字符串 ('^') 后跟一个或多个 space (\s+
) 并将其替换为 ''
以获得最后一个非 space 字符。
sub('^\S+\s+', '', valeur1)
#[1] "8:15" "18:00" NA NA NA NA "8:15" "18:00"
以上可以一步完成,我们在开头匹配零个或多个 space (^\s*
) 或 (|
) 一个或多个 space (\s+
) 后跟一个或多个非 space 字符 (\S+
),最后跟零个或多个 space 字符 (\s*$
) 并替换为 ''
.
gsub("^\s*|\s+\S+\s*$","",valeur)
#[1] "8:01" "17:46" NA NA NA NA "8:01" "17:46"
或者另一种选择是 stri_extract_first
或 stri_extract_last
来自 library(stringi)
我们在开头或结尾匹配一个或多个非 space 字符。
library(stringi)
stri_extract_first(valeur, regex='\S+')
#[1] "8:01" "17:46" NA NA NA NA "8:01" "17:46"
对于last
non_space个字符
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"