首页 > 解决方案 > 从电子邮件创建名称列

问题描述

我有一个数据框,其中包含以下格式的电子邮件列:

Email
Jane_Anderson@email.com
Andy_Smith@email.com

我想创建一个新列,根据电子邮件列(删除 _ 和 @email.com)告诉我此人的全名。所以新列看起来像:

Full Name
Jane Anderson
Andy Smith

标签: r

解决方案


我们可以使用extract捕获第一个单词 ( (\\w+)) 后跟下划线,然后是第二个捕获组中的一个或多个字母,然后是 @ 和其他字符

library(tidyr)
extract(df1, Email, into = c("Full", "Name"), "^(\\w+)_([A-Za-z]+)@.*")
#  Full     Name
#1 Jane Anderson
#2 Andy    Smith

或者去掉后缀部分后使用base Rwithread.table

read.table(text = trimws(df1$Email, whitespace = "@.*"), sep="_",
      header = FALSE, col.names = c("Full", "Name"))
#   Full     Name
#1 Jane Anderson
#2 Andy    Smith

数据

df1 <- structure(list(Email = c("Jane_Anderson@email.com", 
"Andy_Smith@email.com"
)), class = "data.frame", row.names = c(NA, -2L))

推荐阅读