如何为子字符串的开头指定动态位置?

ana*_*rce 5 r

如示例中所示,我正在尝试substring使用data.frame(video_data_2)中的Video_full列.我希望在这段时间之后保留所有角色.期间始终存在,只有一个期间,并且该列的每个值处于不同的位置.

     Date                     Video_full      Instances   
1 Apr 1, 2010  installs/AA.intro_video_1      546         
2 Apr 1, 2010  installs/ABAC.intro_video_2    548      
Run Code Online (Sandbox Code Playgroud)

我有子串工作:

video_data_2$Video_full <- substring(video_data_2$Video_full,11)
Run Code Online (Sandbox Code Playgroud)

而且strsplit:

strsplit("installs/AA.intro_video_1 ",'[.]')
Run Code Online (Sandbox Code Playgroud)

我只是无法弄清楚如何substring在动态位置启动或仅保留返回的第二个值strsplit.

感谢您为简单问题提供的任何帮助.

koh*_*ske 9

你可以使用sub()

video_data_2$Video_full <- sub("^.*\\.","", video_data_2$Video_full)
Run Code Online (Sandbox Code Playgroud)


Mar*_*rek 8

另一种使用方式 strsplit

sapply(strsplit(video_data_2$Video_full, "\\."), "[", 2)
Run Code Online (Sandbox Code Playgroud)

这是简写

sapply(strsplit(video_data_2$Video_full, "\\."), function(x) x[2])
Run Code Online (Sandbox Code Playgroud)

  • @ gd047索引运算符"["是一个函数,你可以通过`?"["`(或`help("[")`)来达到它的帮助.您可以将它用作任何其他函数,例如:`\`[\`(letters,3:5)`,但是当你必须直接提供函数名称时,它在诸如question或`do.call`或其他地方的情况下非常有用. (2认同)

had*_*ley 5

尝试 stringr

library(stringr)
str_split_fixed(video_data_2$Video_full, "\\.", n = 2)[, 2]
Run Code Online (Sandbox Code Playgroud)