की ?mutate_each
(कम से कम नीचे से) यह उस कार्य की तरह दिखता है, जैसा कि @ डॉकेंडो डिस्किमस के उत्तर में, हटा दिया जाएगा और अधिक लचीला विकल्प mutate_if
, mutate_all
, और mutate_at
के साथ प्रतिस्थापित किया जाएगा। @ हडली ने अपनी टिप्पणी में उल्लेख किया है कि सबसे अधिक संभवतः mutate_at
का उपयोग कर रहा है। ध्यान दें कि mutate_each
की तुलना में तर्कों का क्रम उलट दिया गया है, और vars()
select()
का उपयोग अर्थशास्त्र की तरह करता है, जिसे मैं ?select_helpers
फ़ंक्शंस का अर्थ समझता हूं।
dat %>% mutate_at(vars(starts_with("fac")),funs(factor)) %>%
mutate_at(vars(starts_with("dbl")),funs(as.numeric))
लेकिन mutate_at
स्तंभ के बजाय संख्या एक vars()
तर्क ले जा सकते हैं, और इस पेज के माध्यम से पढ़ने, और विकल्प देखने के बाद, मैं mutate_at
लेकिन grep
के साथ प्रयोग कर एक बार में स्तंभ नाम के कई अलग अलग प्रकार पर कब्जा करने के समाप्त हो गया (जब तक आप हमेशा इस तरह के स्पष्ट कॉलम नाम!)
dat %>% mutate_at(grep("^(fac|fctr|fckr)",colnames(.)),funs(factor)) %>%
mutate_at(grep("^(dbl|num|qty)",colnames(.)),funs(as.numeric))
मैं mutate_at
+ grep
पता लगाना के बारे में बहुत उत्साहित थी, क्योंकि अब एक पंक्ति बहुत से पर काम कर सकते कॉलम।
संपादित करें - अब मैं select12helpers में से matches()
देखता हूं, जो रेगेक्स को संभालता है, इसलिए अब मुझे यह पसंद है।
dat %>% mutate_at(vars(matches("fac|fctr|fckr")),funs(factor)) %>%
mutate_at(vars(matches("dbl|num|qty")),funs(as.numeric))
एक अन्य आम तौर पर संबंधित टिप्पणी - यदि आपके पास मिलान करने वाले नामों और लगातार प्रारूपों के साथ आपके सभी दिनांक कॉलम हैं, तो यह शक्तिशाली है। मेरे मामले में, यह मेरे सभी YYYYMMDD कॉलम को बदल देता है, जो संख्याओं के रूप में, तारीखों में पढ़े गए थे।
mutate_at(vars(matches("_DT$")),funs(as.Date(as.character(.),format="%Y%m%d")))
इस मामले तुम भी इस्तेमाल कर सकते हैं 'starts_with()' – hadley
अपने सुझाव, @hadley के लिए धन्यवाद किया। तो पहले मामले के लिए जो '%%>% mutate_each (funs (factor), start_with ("fac") होगा)' स्ट्रिंग "fac" से शुरू होने वाले सभी कॉलम को कारक में परिवर्तित करने के लिए। –
@docendodiscimus यह सही है – hadley