R电子邮件数据争用

R电子邮件数据争用,r,data-cleaning,R,Data Cleaning,需要帮助!这是一个与工作相关的项目。我需要清理16000封电子邮件。。。预期手动完成:(我需要找到一个地址,从电子邮件中提取域名并将其放入一个新列,同时将名称解析为一个新列,同时保留原始电子邮件。数据部分已完成 library(tidyr) library(magrittr) Email.Address <- c('john.doe@abccorp.com','jdoe@cisco.com','johnd@widgetco.com') First.Name <- c('John',

需要帮助!这是一个与工作相关的项目。我需要清理16000封电子邮件。。。预期手动完成:(我需要找到一个地址,从电子邮件中提取域名并将其放入一个新列,同时将名称解析为一个新列,同时保留原始电子邮件。数据部分已完成

library(tidyr)
library(magrittr)

Email.Address <- c('john.doe@abccorp.com','jdoe@cisco.com','johnd@widgetco.com')
First.Name <- c('John', 'JDoe','NA' )
Last.Name <- c('Doe','NA','NA')
Company <- c('NA','NA','NA')

data <- data.frame(Email.Address, First.Name, Last.Name, Company)
separate_DF <- data %>% separate(Email.Address, c("Company"), sep="@")
library(tidyr)
图书馆(magrittr)
Email.Address试试这个

df  <-  data.frame(Email.Address, First.Name, Last.Name, Company, stringsAsFactors = FALSE)
Corp <- sapply(strsplit(sapply(strsplit(df$Email.Address,"@"),"[[",2),"[.]"),"[[",1)
F.Name <- sapply(strsplit(sapply(strsplit(df$Email.Address,"@"),"[[",1), "[.]"),"[[",1)
L.Name <- sapply(strsplit(sapply(strsplit(df$Email.Address,"@"),"[[",1),"[.]"),tail,n=1)
L.Name[L.Name == F.Name]    <-  NA
OUT <- data.frame(df$Email.Address, F.Name, L.Name, Corp)
df[df=="NA" |is.na(df)] <-  OUT[df=="NA" |is.na(df)]
df

请提供一个可复制的示例。请参阅
tidyr
包中的
separate
,将电子邮件地址分为两列。我很快会制作一个更好的示例,我正在工作,无法访问base中的Ror
strsplit
R@SJSU2013事实上,这更像是一个纯NLP任务,而不是一个数据处理任务我不想编辑这一部分,因为你实际上并没有询问这一部分。这将使未来用户更容易搜索并找到他们想要的内容。此外,如果你根据评论找到解决方案,我鼓励你将其作为答案发布并接受该答案。这对发布的数据非常有效。但我得到了一个e我的实际数据出错。“strsplit(df$Email.Address,“@”):非字符参数中出错”,然后尝试
as.character(df$Email.Address)
。现在我收到的消息是:Corp@SJSU2013您输入错误
df@Email.Address
而不是
df$Email.Address
是的!!!tidyr代码非常有效。你为我节省了周末的枯燥工作!我真是感激不尽!
library(tidyr)

df  <-  data.frame(Email.Address, First.Name, Last.Name, Company)
df2 <-  separate(df, Email.Address, into = c("Name", "Corp"), sep = "@")
df2 <-  separate(df2, Name, into = c("F.Name", "L.Name"), sep = "[.]", extra = "drop")
df2 <-  separate(df2, Corp, into = c("Corp", "com"), sep = "[.]", extra = "drop")