Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将电子邮件地址列表拆分为用户名和域?_R - Fatal编程技术网

R 如何将电子邮件地址列表拆分为用户名和域?

R 如何将电子邮件地址列表拆分为用户名和域?,r,R,我有一张桌子,上面有一列电子邮件。我想把它分成两列,一列是用户名,另一列是域。我尝试过几种解决方案,但我在处理列表时遇到了麻烦 我可以使用str_locate()找到@的位置并使用它进行拆分。我也可以使用str_split 这是我使用的代码 my_df %>% mutate(domain = str_locate(du_email, "@")[1]) 问题是str_locate返回一个列表。当我不包括一个切片[1]时,我会得到一个错误,因为它创建了太多的值;当我包括一个切片时,所有的值都

我有一张桌子,上面有一列电子邮件。我想把它分成两列,一列是用户名,另一列是域。我尝试过几种解决方案,但我在处理列表时遇到了麻烦

我可以使用str_locate()找到@的位置并使用它进行拆分。我也可以使用str_split

这是我使用的代码

my_df %>% mutate(domain = str_locate(du_email, "@")[1])
问题是str_locate返回一个列表。当我不包括一个切片[1]时,我会得到一个错误,因为它创建了太多的值;当我包括一个切片时,所有的值都会被第一个结果的输出填充

您可以使用

library(dplyr)

df <- data.frame(ID = c(1,2,3,4,5),
             Email = c("1@gmail.com","2@hotmail.com","3@test.com","4@yahoo.com","5@gmail.com"))

test <- df%>%
  mutate(user = gsub("@.*","",Email))%>%
  mutate(Domain = gsub(".*@","",Email))%>%
  select(-Email)

   ID user      Domain
1  1    1   gmail.com
2  2    2 hotmail.com
3  3    3    test.com
4  4    4   yahoo.com
5  5    5   gmail.com
库(dplyr)
df%
变异(域=gsub(“.@”,电子邮件))%>%
选择(-Email)
ID用户域
1.gmail.com
2 hotmail.com
3.test.com
4雅虎网站
5.gmail.com
您可以使用

library(dplyr)

df <- data.frame(ID = c(1,2,3,4,5),
             Email = c("1@gmail.com","2@hotmail.com","3@test.com","4@yahoo.com","5@gmail.com"))

test <- df%>%
  mutate(user = gsub("@.*","",Email))%>%
  mutate(Domain = gsub(".*@","",Email))%>%
  select(-Email)

   ID user      Domain
1  1    1   gmail.com
2  2    2 hotmail.com
3  3    3    test.com
4  4    4   yahoo.com
5  5    5   gmail.com
库(dplyr)
df%
变异(域=gsub(“.@”,电子邮件))%>%
选择(-Email)
ID用户域
1.gmail.com
2 hotmail.com
3.test.com
4雅虎网站
5.gmail.com

我猜您正在寻找
分离(my_df,du_email,into=c(“name”,“domain”),sep=“@”)
很漂亮。核心R的分离部分是吗?它在
tidyr
中-packageBase R函数应该是
strsplit
,例如
as.data.frame(do.call(rbind,strsplit(xy),@)
其中
xy
是电子邮件地址的字符向量。我猜您正在寻找
单独的(my_df,du_email,into=c(“名称”,“域”),sep=“@)
Beautiful。是核心R的独立部分吗?它位于
tidyr
-packageBase R函数将是
strsplit
,例如
as.data.frame(do.call(rbind,strsplit(xy,“@”))
其中
xy
是电子邮件地址的字符向量。