提取字符串的第一个(或最后一个)n个字符

Lis*_*Ann 67 string r

我想提取字符串的第一个(或最后一个)n个字符.这相当于Excel LEFT()RIGHT().一个小例子:

# create a string
a <- paste('left', 'right', sep = '')
a
# [1] "leftright"
Run Code Online (Sandbox Code Playgroud)

我想生成b一个字符串,它等于前4个字母a:

b
# [1] "left"
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

rcs*_*rcs 74

看到 ?substr

R> substr(a, 1, 4)
[1] "left"
Run Code Online (Sandbox Code Playgroud)


jub*_*uba 44

stringr软件包提供的str_sub功能比使用它更容易substr,特别是如果你想提取字符串的正确部分:

R> str_sub("leftright",1,4)
[1] "left"
R> str_sub("leftright",-5,-1)
[1] "right"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的提示,朱巴; 顺便说一下,我认为我会接受rcs的回答,因为它涉及基础`R` :) (3认同)
  • 知道基础R是好的,但如果涉及字符串函数,如果你只使用@juba提到的字符串,你的生活会更容易 (3认同)

And*_*llo 19

您可以从Rbase包开始轻松获取Right()和Left()函数:

  • 正确的功能

    __CODE__

  • 左功能

    __CODE__

您可以在excel中将这两个自定义函数完全用作left()和right().希望你会发现它很有用


gbg*_*yst 7

对于那些来自 Microsoft Excel 或 Google Sheets 的用户,您会看到诸如LEFT()RIGHT()和 之类的函数MID()。我创建了一个名为forstringr 的包,其开发版本目前位于Github上。

if(!require("devtools")){
 install.packages("devtools")
}

devtools::install_github("gbganalyst/forstringr")

library(forstringr)
Run Code Online (Sandbox Code Playgroud)
  • the str_left():从左边开始计数,然后提取n个字符

  • -str_right()从右边开始计数,然后提取n个字符

  • the str_mid()- 从中​​间提取字符

例子:


x <- "some text in a string"

str_left(x, 4)

[1] "some"

str_right(x, 6)

[1] "string"

str_mid(x, 6, 4)

[1] "text"

Run Code Online (Sandbox Code Playgroud)


小智 6

让它变得简单并使用 R 基本函数:

# To get the LEFT part:
> substr(a, 1, 4)
[1] "left"
> 
# To get the MIDDLE part:
> substr(a, 3, 7)
[1] "ftrig"
> 
# To get the RIGHT part:
> substr(a, 5, 10)
[1] "right"
Run Code Online (Sandbox Code Playgroud)

substr()功能告诉您开始和停止的位置substr(x, start, stop)