r - 从电子邮件创建名称列
问题描述
我有一个数据框,其中包含以下格式的电子邮件列:
Email
Jane_Anderson@email.com
Andy_Smith@email.com
我想创建一个新列,根据电子邮件列(删除 _ 和 @email.com)告诉我此人的全名。所以新列看起来像:
Full Name
Jane Anderson
Andy Smith
解决方案
我们可以使用extract
捕获第一个单词 ( (\\w+)
) 后跟下划线,然后是第二个捕获组中的一个或多个字母,然后是 @ 和其他字符
library(tidyr)
extract(df1, Email, into = c("Full", "Name"), "^(\\w+)_([A-Za-z]+)@.*")
# Full Name
#1 Jane Anderson
#2 Andy Smith
或者去掉后缀部分后使用base R
withread.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))
推荐阅读
- matlab - 有没有办法从规则分布的曲率值绘制二维曲线?
- html - 如何删除水平滚动?
- reactjs - React setState 没有得到更新
- c# - 使用 Google Drive API V3 复制 Google Drive 文件时出错
- python - 通过Flask /不使用plt.show()转换为json时如何添加Plotly图形配置
- sql - postgresql中的多个引用
- c# - 如何正确地将 DI HttpClient 转换为 FlurlClient?
- python - 如何访问flask-sqlalchemy中的primary_key?
- php - Oauth 2.0 身份验证授权类型:密码
- python - Python迭代一个列表并从所有迭代中创建一个嵌套列表