用名字创建一个新列

时间:2019-07-17 03:10:15

标签: r

我想在我的数据框中添加一个带有名字的新列。我是R的新手,我不知道该怎么做。非常感谢您的帮助。

我的数据框(一小部分):

 name
 Carl J. Johnson
 David Marcus
 A. Anna Jane Lue

我想创建一个像这样的新数据框:

 name              first_name
 Carl J. Johnson   Carl
 David Marcus      David
 A. Anna Jane Lue  A.

2 个答案:

答案 0 :(得分:2)

使用sub

df$first_name <- sub("(\\w+\\.?).*", "\\1", df$name)

df
#              name first_name
#1  Carl J. Johnson       Carl
#2     David Marcus      David
#3 A. Anna Jane Lue         A.

或以相反的方式

sub("\\s+.*", "", df$name)
#[1] "Carl"  "David" "A."   

或者stringr::word默认返回第一个单词。

stringr::word(df$name)
#[1] "Carl"  "David" "A." 

答案 1 :(得分:2)

假设您的数据框为df,则可以使用gsub

df$first_name <- gsub(" .*$", "", df$name)
# [1] "Carl"  "David" "A."

regex基本上是说,在第一个空格()之后,对于任何字符(.*),直到字符串的结尾($),都将其替换为一无所有("")。