首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从列中提取数据,并将提取作为现有数据帧中的新变量进行填充

从列中提取数据,并将提取作为现有数据帧中的新变量进行填充
EN

Stack Overflow用户
提问于 2018-05-15 00:27:03
回答 3查看 69关注 0票数 0

我有一个电子邮件地址的数据帧,我需要按地址和域拆分。我找到了tidyr和它的单独命令,但是当我运行new_var时,我要么将一个数据帧添加到我的数据帧中,称为“tidyr”,要么将正确分隔的数据打印到控制台中。

我需要将分离的数据作为新列添加到我现有的数据框架中。

我使用的是类似于

代码语言:javascript
运行
复制
separate(email_data, EMAIL_ADDRESS, into=c("address","domain"), sep="@", remove=FALSE)

我需要将结果添加到我的'email_data‘DF中,一个名为address,一个名为domain。

我查看了这里和其他地方,我试图添加使用粘贴(而不是c(,但这并没有做到。

任何帮助都是非常感谢的。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2018-05-15 01:51:35

提供的两个答案很有帮助(也很感谢),但都不能完全满足我的需要,这在一定程度上是我的错。所有我真正需要的是电子邮件地址的域名部分。

我可以从email_address字段中提取它,并使用以下内容为它提供自己的列:

代码语言:javascript
运行
复制
email_data$domain1 <- substring(email_data$EMAIL_ADDRESS, 
regexpr("@", email_data$EMAIL_ADDRESS) + 1)

substring(text, start, stop)
text = email_address field
start = +1 character after @ symbol
stop = blank b/c I want everything after the @ symbol
票数 1
EN

Stack Overflow用户

发布于 2018-05-15 00:39:27

下面是一个以前的机器学习问题的例子:

merc1 <- merc %>% separate(category_name,into=c("cn1","cn2","cn3"),sep="/",extra="drop")是您的输入列字符吗?

彼得

票数 0
EN

Stack Overflow用户

发布于 2018-05-15 00:47:46

您可以使用以下代码

代码语言:javascript
运行
复制
library(stringr)    
email_data <- str_split_fixed(email_data$EMAIL_ADDRESS, "@", 2)
colnames(email_data) <- c("Address","Domain")

我已经测试过了,这将会起作用。

编辑:添加示例

代码语言:javascript
运行
复制
Name <- c('testname', 'testname1234')
EMAIL_ADDRESS <- c('pk@sss.com', 'qwert@tyuu.com')
Init_frame <- data.frame(Name,EMAIL_ADDRESS )
Init_frame

email_data <- data.frame(EMAIL_ADDRESS)
library(stringr)
email_data <- str_split_fixed(email_data$EMAIL_ADDRESS, "@", 2)
colnames(email_data) <- c("Address","Domain")
email_data

Init_frame <- data.frame (Name,email_data)
Init_frame
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50334973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档