मैं "@" पर ईमेलड्रेस युक्त कॉलम को विभाजित करना चाहता हूं।ईमेल पते वाले स्प्लिट कॉलम
d$domain<-strsplit(d$email, "@")[[1]]
काम नहीं करता है। ऐसा करने का सही तरीका क्या है?
मैं "@" पर ईमेलड्रेस युक्त कॉलम को विभाजित करना चाहता हूं।ईमेल पते वाले स्प्लिट कॉलम
d$domain<-strsplit(d$email, "@")[[1]]
काम नहीं करता है। ऐसा करने का सही तरीका क्या है?
(शायद) एक से अधिक पंक्ति आवश्यक है:
for (i in 1:length(row.names(d)){
d$domain[i]<-unlist(strsplit(d$email[i], "@"))[2]
}
(नोट: d$email
character
और नहीं factor
हो सकता है और चाहिए, जबकि आप अपने प्रश्न में सूचकांक के रूप में 1 इस्तेमाल किया, 2 की अनुक्रमणिका किसी ईमेल के डोमेन से मेल खाती है)
अद्यतन: मुझे लगता है कि इस कार्य को 'लागू' का उपयोग करके एक पंक्ति में पूरा करने का एक तरीका अभी भी है, लेकिन मुझे यकीन नहीं है कि यह कैसे करें ... अभी तक। (समारोह को परिभाषित करने के बाद)
एक पंक्ति जवाब: fn <- function(x){unlist(strsplit(x,"@"))[2]}
d$domain <- lapply(d$email, fn)
आपके पास सही विचार है, लेकिन आप इसे गलत तरीके से पार्स कर रहे हैं। इस प्रयास करें:
name <- "[email protected]"
splitname <- strsplit(name, "@")
emailid <- sapply(splitname, "[", 1)
domain <- sapply(splitname, "[", 2)
तुम भी पता है, इस तरह के प्रत्येक आधे के लिए एक पंक्ति के साथ एक मैट्रिक्स कर सकता है, और आसानी से जो भी हिस्सा आप चाहते थे का चयन करें।
matrix(unlist(strsplit(name,"@")),nrow=2)
आप नियमित अभिव्यक्ति का उपयोग कर सकते हैं - वे मजेदार हैं!
d <- data.frame(email=rep([email protected], 10))
d$address <- gsub("@.*", "", d$email)
d$domain <- gsub(".*@", "", d$email)
stringr
पैकेज से str_split_fixed
इस आसान बनाता है:
library(stringr)
str_split_fixed(d$email, "@", n = 2)
यहाँ एक समारोह है कि आप के लिए ईमेल बंटवारे का ध्यान रखना चाहिए है। यह ईमेल के स्थानीय और डोमेन भागों के साथ एक सूची देता है।
parse.email <- function(emails) {
email.list <- strsplit(emails, split = '@')
# Preallocate the vectors
n <- length(email.list)
local <- vector(length = n)
domain <- vector(length = n)
for (i in 1:n){
local[i] <- email.list[[i]][1]
domain[i] <- email.list[[i]][2]
}
l <- list(local, domain)
names(l) <- c('local', 'domain')
return(l)}
क्या नियमित अभिव्यक्तियों के लिए मेटाएक्टेक्टर है? यदि ऐसा है, तो आपको इसे "\\" से पहले करने की आवश्यकता हो सकती है। Http://127.0.0.1:15646/library/base/html/strsplit.html – Jubbles
देखें या आपको 'strsplit (डी $ ईमेल," @ ") ',' के 'असूची' को अनुक्रमित करने की आवश्यकता हो सकती है। 'डी $ डोमेन <-unlist (strsplit (डी $ ईमेल," @ ")) [1]' – Jubbles