2012-09-12 21 views
20

मेरे पास मौजूदा डेटा फ्रेम 'my_data' से नया डेटा फ्रेम 'new_data' बनाने के लिए यह नमूना कोड है।एक वैरिएबल से पहले डॉलर का संकेत

new_data = NULL 
n = 10 #this number correspond to the number of rows in my_data 
conditions = c("Bas_A", "Bas_T", "Oper_A", "Oper_T") # the vector characters correspond to the target column names in my_data 
for (cond in conditions){ 
    for (i in 1:n){ 
     new_data <- rbind(new_data, c(cond, my_data$cond[i])) 
    } 
} 

समस्या यह है कि my_data$cond (जहां cond एक चर, और न स्तंभ नाम है) स्वीकार नहीं किया जाता है।

डॉलर चिह्न के बाद, एक चर मूल्य के बाद, मैं डेटा फ्रेम के कॉलम को कैसे कॉल कर सकता हूं?

my_data[ , cond] 

या

my_data[[cond]] 

i वीं पंक्ति के साथ पहुँचा जा सकता है:

+8

'' $ वास्तव में प्रोग्राम के लिए इस्तेमाल किया जा करने के लिए नहीं है: अपने कॉलम के नाम है, तो आप $ चिह्न का उपयोग कर सकते हैं। यह इंटरेक्टिव उपयोग के लिए एक सुविधा होने का मतलब है। इसके बजाए 'mydata [i, cond] 'का उपयोग करने का प्रयास करें। हालांकि, आपके कोड को देखते हुए मुझे लगता है कि आपको 'reshape' फ़ंक्शन, या वास्तव में' reshape2' पैकेज को देखने से लाभ हो सकता है ... – James

+0

ध्यान दें कि 'my_data' एक डेटा है।फ्रेम' और 'new_data' एक 'मैट्रिक्स' है। – GSee

+3

'भाग्य (312)' देखें। –

उत्तर

32

एक कॉलम, उपयोग का उपयोग करने के

my_data[i, ] 

कम्बाइन दोनों वांछित मान प्राप्त करने के लिए :

my_data[i, cond] 

या

my_data[[cond]][i] 
+0

हम 'c $ कॉलम 'का उपयोग नहीं कर सकते, जहां' c' एक मैट्रिक्स है? मुझे सी $ col1 में त्रुटि मिल रही थी: $ ऑपरेटर परमाणु वैक्टरों के लिए अवैध है ... – Mahesha999

+0

@ Mahesha999 आप matrices के साथ '$' का उपयोग नहीं कर सकते हैं। –

3

मैं तुम्हें get() जरूरत है लगता है।

उदाहरण के लिए,
get(x,list), जहां list सूची है और x चर रहा है, जो list$x के बराबर होती है (एक स्ट्रिंग हो सकता है)।

लेकिन get(x,list) में, x एक चर जबकि $, x का उपयोग कर एक चर नहीं किया जा सकता हो सकता है।

0

$ व्यक्तिगत कॉलम ऑब्जेक्ट्स नहीं, कॉलम पर काम करता है। यह वेक्टरेशन का एक रूप है। कोड

corrections$BookDate = as.Date(corrections$BookDate, format = "%m/%d/%Y") 

Date वस्तुओं के लिए तार से corrections तालिका के BookDate स्तंभ की सामग्री बदल देता है। यह इसे एक ऑपरेशन, असाइनमेंट में करता है।

निम्न कार्य करें और यह आपकी समस्या का समाधान होगा:

new_data <- rbind(new_data, c(cond, my_data$cond)) 
0

आप अक्सर एक संपूर्ण स्तंभ, एक डेटा फ्रेम से अर्थात् एक विशिष्ट चर का चयन करना चाहते होंगे। आप चर व्यास के सभी तत्वों का चयन करना चाहते हैं, तो उदाहरण के लिए, इन दोनों के चाल करना होगा:

dataframe_name[,column_position] 
dataframe_name[,"column_name"] 

हालांकि, वहाँ है एक छोटी-कट।

dataframe_name$column_name