我有一个我需要按地址和域分割的电子邮件地址数据框。我找到了tidyr和它的单独命令,但是当我单独运行时,我要么将数据帧添加到我的数据帧,称为“new_var”,要么将正确分离的数据打印到控制台中。
我需要将分隔的数据作为新列添加到现有数据框中。
我正在使用像
这样的东西y <- rep(NA_real_, length(data$x))
for(i in seq_along(data$x)) {
tryCatch({
y[i] <- my_func_vect(data$x[i])
}, error = function(err){})
}
y
# Result is: 1 NA 2 4
我需要将结果添加到我的'email_data'DF中的两列,一个命名地址和一个命名域。
我在这里和其他地方看过,我试图添加使用粘贴(而不是c(但是没有这样做。
感谢任何帮助。
谢谢!
答案 0 :(得分:1)
提供的两个答案都很有帮助(并且赞赏),但是我没有得到我所需要的,这部分是我的错。我真正所需要的只是电子邮件地址的域名部分。
我能够从email_address字段中提取它并为其提供自己的列,其中包含以下内容:
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 :(得分:0)
这是以前机器学习问题的一个例子:
merc1 <- merc %>%
separate(category_name,into=c("cn1","cn2","cn3"),sep="/",extra="drop")
是您的输入列字符?
彼得
答案 2 :(得分:0)
您可以使用以下代码
library(stringr)
email_data <- str_split_fixed(email_data$EMAIL_ADDRESS, "@", 2)
colnames(email_data) <- c("Address","Domain")
我已经测试了这个,这将有效。
编辑:添加示例
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