Cleaning column data in R -
नमस्ते मैंने आर:
periodCleanse & lt; - फ़ंक्शन (x) {if (x == "") {रिटर्न (""); } और यदि (substr (x, nchar (x), nchar (x)) == "एम") (रिटर्न (30 * as.numeric (substr (x, 1, nchar (x) -1)); } और अगर (substr (एक्स, nchar (x), nchar (x)) == "वाई") {वापसी (365 * के रूप में। संख्यात्मक (substr (x, 1, nchar (x) -1))); } और अगर (उपस्ट्रेट (एक्स, एनचर (एक्स), एनचर (एक्स)) == "डी") (रिटर्न (जैसे। न्यूमेरिक (सबस्ट्रेट (एक्स, 1, एनचर (एक्स) -1)); }}
मेरा डीएफ ऐसा कुछ दिखता है:
अवधि 3M 5Y 1D 7M
मैं कॉल करना चाहता हूं
df $ period & lt; - अवधि क्लींस (df $ period))
लेकिन मुझे मिल रहा है:
चेतावनी संदेश: यदि (x == "") {: स्थिति की लंबाई & gt; 1 और केवल पहले तत्व का उपयोग किया जाएगा
और कुछ भी नहीं होता है मुझे क्या करना चाहिए?
मैं सिर्फ वेक्टरयुक्त फ़ंक्शन बनाऊँगा जो आपको अंतहीन लिखने से बचाएगा < कोड> यदि else
और इसे एक पाश ( sapply
)
periodCleanse2 & lt; - function (x) {} में चलाना { मैचडाट & lt; - data.frame (ए = सी ("एम", "वाई", "डी"), बी = सी (30, 365, 1)) # आप गति इंडक्स में सुधार के लिए उस भाग को फ़ंक्शन से निकाल सकते हैं & Lt; - gsub ("\\ d", "", x) indx2 & lt; - as.numeric (gsub ("[az]", "", x)) $ $ मैच [मैच (इंडक्स, मैचडेट $ ए) ] * Indx2} अवधिक्लानसे 2 (df $ अवधि) ## [1] 90 1825 एनए 1 210
Comments
Post a Comment