मैं एक डेटाबेस में लगभग 2 मिलियन प्रविष्टियों को साफ करने की कोशिश कर रहा हूं जिसमें नौकरी के शीर्षक शामिल हैं। कई के पास कई संक्षिप्तीकरण हैं जिन्हें मैं एक एकल सुसंगत और अधिक आसानी से खोजे जाने वाले विकल्प में बदलना चाहता हूं। अब तक मैं केवल व्यक्तिगत mapply(gsub(...) कमांड वाले कॉलम से गुजर रहा हूं। लेकिन मेरे पास इस तरह बनाने के लिए लगभग 80 बदलाव हैं, इसलिए इसे चलाने में लगभग 30 मिनट लगते हैं। वहां एक बेहतर तरीका हो गया है। मैं स्ट्रिंग खोज में नया हूं, मुझे *$ ट्रिक मिली, जिसने मदद की। क्या एक mapply एक से अधिक खोज करने का कोई तरीका है? मुझे लगता है कि शायद तेजी से? कोई भी मदद बहुत अच्छी रहेगी। धन्यवाद।

नीचे कुछ कोड दिए गए हैं। टेस्ट 2 मिलियन व्यक्तिगत नौकरी खिताब का एक स्तंभ है।

test <- mapply(gsub, " Admin ", " Administrator ", test)
test <- mapply(gsub, "Admin ", "Administrator ", test)
test <- mapply(gsub, " Admin*$", " Administrator", test)
test <- mapply(gsub, "Acc ", " Accounting ", test)
test <- mapply(gsub, " Admstr ", " Administrator ", test)
test <- mapply(gsub, " Anlyst ", " Analyst ", test)
test <- mapply(gsub, "Anlyst ", "Analyst ", test)
test <- mapply(gsub, " Asst ", " Assistant ", test)
test <- mapply(gsub, "Asst ", "Assistant ", test)
test <- mapply(gsub, " Assoc ", " Associate ", test)
test <- mapply(gsub, "Assoc ", "Associate ", test)
1
Dick McManus 18 नवम्बर 2015, 08:06

2 जवाब

सबसे बढ़िया उत्तर

यहां एक आधार आर समाधान है जो काम करता है। आप एक डेटा फ्रेम को परिभाषित कर सकते हैं जिसमें सभी पैटर्न और उनके प्रतिस्थापन होंगे। फिर आप पंक्ति मोड में apply() का उपयोग करते हैं और प्रत्येक {/ X2}} वेक्टर पर प्रत्येक पैटर्न / प्रतिस्थापन संयोजन के लिए gsub() का उपयोग करते हैं। यहाँ नमूना कोड यह प्रदर्शित करता है:

df <- data.frame(pattern=c(" Admin ", "Admin "),
                 replacement=c(" Administrator ", "Administrator "))

test <- c(" Admin ", "Admin ")

apply(df, 1, function(x) {
                test <<- gsub(x[1], x[2], test)
             })

> test
[1] " Administrator " "Administrator " 
3
Tim Biegeleisen 18 नवम्बर 2015, 05:23

एक विकल्प library(qdap) से mgsub का उपयोग करना होगा

mgsub(patternVec, replaceVec, test)

डेटा

patternVec <- c(" Admin ", "Admin ")
replaceVec <- c(" Administrator ",  "Administrator ")
5
akrun 18 नवम्बर 2015, 05:12