从n行中提取字符串中的单词,并将该单词作为R中的新col

Rau*_*les 2 string r extract

我有一个包含3列的数据集,有15565个观测值.其中一列已在同一行中有多个单词.我想要做的是从每一行中提取一个特定的单词并将其附加到一个新列(我将总共有4个col)问题是我正在寻找的单词不一样而且它们不是总是在同一个位置.这是我DS的摘录:

x y z 1 T 3C00652722 (T558799A) 2 T NA >> MSP: T0578836A & 3C03024632 3 T T0579010A, 3C03051500, EAET03051496 4 U T0023231A > MSP: T0577506A & 3C02808556 8 U (T561041A C72/59460)>POPMigr.T576447A,C72/221816*3C00721502

我希望提取所有以3C10个字符开头的单词然后将其附加到新的col,所以它看起来像这样:

x y z R
1 T 3C00652722 (T558799A) 3C00652722 2 T NA >> MSP: T0578836A & 3C03024632 3C03024632 3 T T0579010A, 3C03051500, EAET03051496 3C03051500 4 U T0023231A > MSP: T0577506A & 3C02808556 3C02808556 8 U >POPMigr.T576447A,C72/221816*3C00721502 3C00721502

我尝试过使用stringr gprep库但没有用.

akr*_*run 5

我们可以这样做 str_extract

library(stringr)
df1$R <- str_extract(df1$z, "\\b3C[^, ]{8}")
df1$R
#[1] "3C00652722" "3C03024632" "3C03051500" "3C02808556" "3C00721502"
Run Code Online (Sandbox Code Playgroud)

  • 而且我认为这比使用`gsub`更好,因为输入可能与模式不匹配的情况不能很好地处理.`str_extract`将返回`NA`,这是一个非匹配+1的合适占位符. (3认同)