2012-11-15 17 views
8

को संरक्षित करने वाले विशिष्ट कॉलम पर फ़ंक्शन लागू करें, मैं अपने डेटाफ्रेम के विशिष्ट कॉलम पर मेरे डीएफ से अन्य कॉलम को "छोड़कर" कार्यों को कैसे कार्यान्वित करना सीखना चाहता हूं। उदाहरण के लिए मैं 1000 से कुछ विशिष्ट कॉलम गुणा करना चाहता हूं और अन्य लोगों को छोड़ दूंगा।आर: शेष डेटाफ्रेम

इस तरह उदाहरण के लिए sapply समारोह का उपयोग करना:

a<-as.data.frame(sapply(table.xy[,1], function(x){x*1000})) 

मैं पहले कॉलम 1000 से लेकिन अन्य स्तंभों कि मैं ऑपरेशन में उपयोग नहीं किया बिना गुणा के साथ नए dataframes मिलता है। तो मेरा प्रयास इस तरह ऐसा करना था:

a<-as.data.frame(sapply(table.xy, function(x) if (colnames=="columnA") {x/1000} else {x})) 

लेकिन यह काम नहीं किया।

मेरा कामकाज दोनों डेटाफ्रेम को आईडी के साथ एक और पंक्ति देना था और बाद में एक पूर्ण प्राप्त करने के लिए नए बनाए गए पुराने डेटाफ्रेम को मर्ज करना था। लेकिन मुझे लगता है कि एक बेहतर समाधान होना चाहिए। यही है ना

उत्तर

6

आप केवल एक या कुछ स्तंभों पर एक गणना करना चाहते हैं तो आप transform का उपयोग या बस कर सकते हैं सूचकांक इसे मैन्युअल:

# with transfrom: 
df <- data.frame(A = 1:10, B = 1:10) 
df <- transform(df, A = A*1000) 

# Manually: 
df <- data.frame(A = 1:10, B = 1:10) 
df$A <- df$A * 1000 
+0

हां। यही वह था जिसे मैं खोज रहा था। धन्यवाद!! – Joschi

+0

यदि मेरे पास बहुत सारे कॉलम हैं (n = 30) तो मैं यह कैसे कर सकता हूं? सभी नाम टाइप करना बहुत अधिक काम होगा ... – Joschi

+2

आपके पास संख्याएं हैं? 'डीएफ [, सी (1,2, ....)] <- 1000 * डीएफ [, सी (1,2, ....)]' –

0

निम्न कोड केवल स्तंभों के लिए वांछित समारोह लागू होंगे जब आप उल्लिखित करना। मैं पुन: उत्पादित उदाहरण के रूप में एक साधारण डेटा फ्रेम बनाउंगा।

(df <- data.frame(x = 1, y = 1:10, z=11:20)) 
(df <- cbind(df[1], apply(df[2:3],2, function(x){x*1000}))) 

असल में, cbind() का उपयोग कॉलम आप समारोह पर चलाने के लिए, तो लक्ष्य स्तंभों पर वांछित कार्यों के साथ apply() का उपयोग नहीं करना चाहते हैं का चयन करें।

संबंधित मुद्दे