R:将电子邮件名称转换为正确的电子邮件地

时间:2014-02-03 22:02:02

标签: r

假设我有两个变量的数据集。变量“To”是名称和电子邮件地址的混合。

                 From           To
1     bob.a@mail1.com       d,alan
2 carolyn.b@mail2.com       c,chris
3   chris.c@mail3.com       b,carolyn
4    alan.d@mail4.com       bob.a@mail1.com   

我想将变量“To”中的名称转换为正确的电子邮件地址,如变量“From”所示。例如:使用1st obs作为alan.d@mail4.com

创建一个新变量“To_email”

如何处理? 非常感谢!

1 个答案:

答案 0 :(得分:0)

你可以这样做:

t <- read.table(text='                 From           To
1     bob.a@mail1.com       d,alan
2 carolyn.b@mail2.com       c,chris
3   chris.c@mail3.com       b,carolyn
4    alan.d@mail4.com       bob.a@mail1.com')

t$FromName <- sub('@.*', '', t$From)
t$ToName <- sub('@.*', '', sub('(.*),(.*)', '\\2.\\1', t$To))
merge(data.frame(Name=t$ToName), data.frame(Name=t$FromName, Email=t$From), by='Name', sort=F)

       Name               Email
1    alan.d    alan.d@mail4.com
2   chris.c   chris.c@mail3.com
3 carolyn.b carolyn.b@mail2.com
4     bob.a     bob.a@mail1.com