从列中提取第一个单词并插入新列

Nic*_*ick 16 r extract dataframe

我有一个数据框,想要提取第一个单词并将其插入新列

Dataframe1:

COL1
Nick K Jones
Dave G Barros
Matt H Smith
Run Code Online (Sandbox Code Playgroud)

将其转换为:

Dataframe2:
COL1              COL2
Nick K Jones      Nick
Dave G Barros     Dave
Matt H Smith      Matt
Run Code Online (Sandbox Code Playgroud)

pic*_*ick 20

您可以使用正则表达式("([A-Za-z]+)""([[:alpha:]]+)""(\\w+)")来获取第一个单词

Dataframe1$COL2 <- gsub("([A-Za-z]+).*", "\\1", Dataframe1$COL1)
Run Code Online (Sandbox Code Playgroud)

  • @Nick尝试选项`"(\\ w +)"`,或者你可以在括号中添加匹配数字的选项,即.`[0-9A-Za-z] +`和`[[:digit:]]` (2认同)

Col*_*bri 20

您可以使用库中的函数word()(stringr):

library(stringr)

Dataframe1$COL2 <- word(Dataframe2$COL1, 1)
Run Code Online (Sandbox Code Playgroud)

  • 这种方法效果很好,但对于较大的数据来说速度非常慢。我正在处理半百万行,“str_extract(Dataframe2$COL1, '[A-Za-z]+')”(也来自“stringr”包)至少快十倍。 (2认同)

mat*_*awn 9

该功能strsplit非常有用

Dataframe1$COL2 <- strsplit(Dataframe1$COL1, " ")[[1]][1]
Run Code Online (Sandbox Code Playgroud)

然后,您可以更改最后一个括号中的数字,以便从字符串中选择其他部分.